两个类在同一个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.有什么方法能够使这两个条件同时满足?
{
...
}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.有什么方法能够使这两个条件同时满足?
internal class A
{
...
}public abstract class B
{
protected A[] array; //这里你通过protected暴露了A,但是A是internal的,所以出错。
...
}
这个是MSDN的原话你现在将CLASS B的访问性定成了PUBLIC,但是里面的A却是INTERNAL的
如果我添加了有B类的DLL引用,现在用C类继承了B类,按照道理来说C类应该有protected A[] array
但是因为我的这个新的DLL肯定不是B类和A类的程序集,所以必然无法访问A类
如此就出错了