两个类在同一个assembly里internal class A
{
...
}public abstract class B
{
   protected A[] array;
   ...
}
现在的问题是编译出现CS0052错误:Inconsistent accessibility: field type 'xxx.xxx.A[]' is less accessible than field 'xxx.xxx.B.array'
由于A类我不想在assembly之外可见,所以声明为internal。由于B是abstract class,而他的域array由于要在子类里可见所以声明为protected.有什么方法能够使这两个条件同时满足? 

解决方案 »

  1.   


    internal class A
    {
    ...
    }public abstract class B
    {
       protected A[] array; //这里你通过protected暴露了A,但是A是internal的,所以出错。
       ...
    }
      

  2.   

    internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的
    这个是MSDN的原话你现在将CLASS B的访问性定成了PUBLIC,但是里面的A却是INTERNAL的
    如果我添加了有B类的DLL引用,现在用C类继承了B类,按照道理来说C类应该有protected A[] array
    但是因为我的这个新的DLL肯定不是B类和A类的程序集,所以必然无法访问A类
    如此就出错了