【发布时间】:2012-09-15 19:34:31
【问题描述】:
假设我有
internal interface IInterface
{
int MyProperty { get; set; }
}
public class MyClass : IInterface
{
internal int MyProperty
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
}
我明白了:
没有实现接口成员;无法实现接口 成员,因为它不公开;
我知道解决方法是什么,但我想知道为什么 C# 不让接口成员私有。
我多次希望我的课程遵循某种模式,但不必将成员公开,例如在编写库时。最重要的是,接口本身是不公开的:X
注意:我不是在问如何实现私有接口成员,但我知道这个决定背后的设计逻辑。我找不到合适的副本。
更新:比原始线程更多,另一个线程中的this code sample from the answer 比大多数描述答案更好地解释了它。或者更好,来自@JonSkeet this
【问题讨论】:
-
我发布了一个答案,但你的问题已经结束了 :( 你需要一个 explicit 接口实现。要使用这个功能,请在你正在实现的成员前面加上接口名称,详情见此贴:How to Implement an Interface Without Making Members Public Using Explicit Interface Implementation
-
@PaoloMoretti 我要求设计决策,不知道如何实现。
-
在编写第 13.4.4 节(接口映射)时,您实际上是在询问 C# 语言设计者的会议记录。如果您的问题只能由当天在房间里的人明确回答,那么您将不得不找到那个房间里的人。
-
@PaoloMoretti 不需要。我知道在考虑我无法想到的非公共接口成员时是否存在任何逻辑复杂性/歧义/愚蠢。是的,here is one 大多数人都无法解释
标签: c# interface access-specifier