类型为内部的受保护成员的Accessiblity不一致

Bub*_*les 2 c# inheritance compiler-errors c#-4.0

谁能解释为什么编译器会给出以下错误?

 namespace Sandbox
{
    internal class DataObj { }

    public class A
    {
        protected DataObj _data;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是编译器错误.

可访问性不一致:字段类型"Sandbox.DataObj"比字段"Sandbox.A._data"更难访问.

只有当我从一个不同的程序集中派生出来时,我才会期待这个错误.思考?

SLa*_*aks 6

问题是可以A不同的组件中获得.这样的类将无法访问属性的返回类型.
因此,声明本身是非法的.

换句话说,此错误发生在声明方,而不是消费方.

这里的基本理念是,创造有时无法使用的东西应该是不可能的.

请注意,这种理念有一些例外; 你可以使用在某些情况下无法使用或继承的泛型做恶行为.
这是允许的,因为将这些错误移到声明方面会限制太多.