我想要InternalClass(internal在大会之外无法访问)
我还想定义protected类型的属性InternalClass(在同一程序集中)
这就是我所拥有的:
internal class InternalClass
{
}
Run Code Online (Sandbox Code Playgroud)
现在我想在另一个类中使用这种类型,但它必须是protected:
public class MyClass
{
protected internal InternalClass IC { get; }
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给我以下错误:
可访问性不一致:属性类型“InternalClass”的可访问性低于属性“MyClass.IC”
当我检查文档时,我可以看到protected internal是一个有效的修饰符,但我不确定如何使用它?
问题是,它MyClass是公共的,意味着外部类(另一个程序集中的一个)可以派生它,然后通过该属性访问内部类protected internal。这是因为protected internal是protected或internal。来自微软文档:
受保护的内部成员可以从当前程序集或从包含类派生的类型访问。
(强调我的)
如果您想保持MyClass公开,那么您需要将其设置为InternalClassnot inside,或者通过将其设置为be来使该属性IC无法从外部访问。来自 MS 文档:ICprivate protected
私有受保护成员可由从包含类派生的类型访问,但只能在其包含程序集中访问
(强调我的)
这似乎是你想要的。