我一直在重构我目前正在进行的项目的代码库,以便将在程序集范围之外无用的类/接口声明为内部(而不是公共)。但是我遇到了以下代码的问题:
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 修饰符含义的好方法。