【发布时间】:2012-08-06 14:47:39
【问题描述】:
我有一个内部抽象类InternalClassBase 和两个(也是内部的)类InternalClass1 和InternalClass2,它们继承自InternalClassBase。
我还有一个公共抽象类PublicClassBase 和两个(也是公共的)类PublicClass1 和PublicClass2,它们继承自PublicClassBase。
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' 的可访问性更小,但如何保护更多可访问然后是内部的?
【问题讨论】:
标签: c# public internal protected access-modifiers