我有一个内部抽象类InternalClassBase
和两个(也是内部)类InternalClass1
和InternalClass2
,它们继承自InternalClassBase
.
我还有一个公共抽象类PublicClassBase
和两个(也是公共)类PublicClass1
和PublicClass2
,它们继承自PublicClassBase
.
具有type的PublicClassBase
受保护成员,因此两者都可以使用它。XXX
InternalClassBase
PublicClass1
PublicClass2
这是我的代码:
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' 更难访问,但如何保护比内部更容易访问?