我有一个内部抽象类InternalClassBase和两个(也是内部)类InternalClass1和InternalClass2,它们继承自InternalClassBase.
我还有一个公共抽象类PublicClassBase和两个(也是公共)类PublicClass1和PublicClass2,它们继承自PublicClassBase.
具有type的PublicClassBase受保护成员,因此两者都可以使用它。XXXInternalClassBasePublicClass1PublicClass2
这是我的代码:
internal abstract class InternalClassBase { }
internal class InternalClass1 : InternalClassBase { }
internal class InternalClass2 : InternalClassBase { }
public abstract class PublicClassBase
{
protected InternalClassBase XXX; // this is where the error happens
}
public class PublicClass1 : PublicClassBase { }
public class PublicClass2 : PublicClassBase { }
为什么在我的示例中不能PublicClassBase包含该XXX成员?我认为这XXX只会在PublicClassBase,PublicClass1和内可见PublicClass2,但不能在它之外。
我还认为我了解访问修饰符,但显然我不了解:)
编辑 - 错误发生在 PublicClassBase 中的 XXX 声明处,异常消息是:不一致的可访问性:字段类型 'ClassLibrary2.InternalClassBase' 比字段 'ClassLibrary2.PublicClassBase.XXX' 更难访问,但如何保护比内部更容易访问?