为什么不允许我在内部类中实现内部接口?这一限制是有特定的原因还是仅仅是语言设计的决定?
internal interface IDefinition
{
string GetValueAsString(string property);
}
internal sealed class DefinitionArray : IDefinition
{
internal string GetValueAsString(string property)
{
return m_definitionRows
.Select(o => o.GetValueAsString(property))
.FirstOrDefault();
}
}
2条答案
按热度按时间unftdfkk1#
C# 6.0语言规范的§3.5.6规定:
接口成员隐式具有
public
声明的可访问性。接口成员声明中不允许使用访问修饰符。所以理论上你得到的是
但这不是问题,因为(§3.5.2):
在程序
P
内的类型T
中声明的嵌套成员M
的可访问域定义如下(注意M
本身可能是一个类型):M
的声明可访问性为public
,则M
的可访问域为T
的可访问域。因此,该成员的可访问性与声明为
internal
的成员等效。rfbsl7qr2#
构成接口实现的成员必须是公共的。即使它们是公共的,因为类是内部的,它也只能用于适当的程序集。