【发布时间】:2010-11-16 07:45:07
【问题描述】:
我一直在重构我目前正在进行的项目的代码库,以便将在程序集范围之外无用的类/接口声明为内部(而不是公共)。但是我遇到了以下代码的问题:
internal interface IFirstInterface
{
...
}
internal interface ISecondInterface
{
IFirstInterface First{ get; }
...
}
public class Implementer : ISecondInterface
{
public IFirstInterface First {get; private set;}
...
}
我的问题:
为什么内部接口的成员必须公开实现?如果您在内部类上实现接口,那么实现的成员不应该是内部的吗?这不是一个大问题,因为接口成员无论如何都不会公开访问,因为该类是内部的。这似乎违反直觉。
主要问题在于上述场景,因为我无法为 IFirstInterface 提供公共 getter,因为它据称是一个内部接口,即我从编译器收到以下错误:
可访问性不一致:属性 类型“IFirstInterface”较少 比财产更容易获得 'Implementer.First'
有没有办法解决这个问题?
注意:我意识到这个重构练习可能没有什么价值,但我认为这将是我更深入地理解 internal 修饰符含义的好方法。
【问题讨论】:
-
如果可以选择,您可以通过使用抽象基类来绕过接口方法公开的限制。