我在同一个程序集中定义了一个接口和一个抽象基类:
IFoo.cs:
internal interface IFoo { ... }
Base.cs:
public abstract class Base
{
internal protected Base(IFoo foo) { ... }
}
这会产生以下编译器错误:
CS0051: Inconsistent accessibility: parameter type 'IFoo' is less
accessible than method 'Base.Base(IFoo)'
如果我只将基类构造函数设为内部,错误就会消失。由于该类是抽象的,因此向可访问性添加保护可能不会完成任何事情......
不过,我不明白这个错误。MSDN 将“受保护的内部”定义为
“访问仅限于当前程序集或从包含类派生的类型”
内部接口 IFoo 如何比内部受保护的构造函数更难访问?