我有一個內部抽象類InternalClassBase
和兩個(也是內部)類InternalClass1
和InternalClass2
,它們繼承自InternalClassBase
。與抽象類的不可訪問性
我也有一個公共抽象類PublicClassBase
和兩個(也公開)班PublicClass1
和PublicClass2
,從PublicClassBase
繼承。
的PublicClassBase
具有InternalClassBase
類型的保護構件XXX
,這樣既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'可訪問,但受保護如何更容易訪問,然後內部?
解決方法是將成員從'protected'更改爲'internal'。 – CodesInChaos 2012-08-09 11:34:12
明白了,謝謝! – sventevit 2012-08-09 11:40:13