我有一个内部类A
可以做很多事情,我有一组其他类B
、D
、E
继承自类A
。当然,这是行不通的,因为编译器会抱怨公共类无法扩展内部类(有关解释,请参阅此处)。
我不希望A
是公开的,因为我不希望我的用户继承它。我希望他们只使用B
、D
、E
。
我知道我可以使用[EditorBrowsable(EditorBrowsableState.Never)]
对智能感知隐藏该类,但用户仍然可以使用反射:(访问它
有没有办法实现这一点?
A
在程序集 A 中,并且B
、D
和 E
在程序集 BBE 中,则可以在 A 上声明 InternalsVisibleTo
属性,使 BDE 成为友节点。像这样,B
、D
和E
将能够看到A
。
尽管如此,您仍然不能从A
继承,因为超类的可见性不能低于子类。您可以通过声明A
公共同时将其所有构造函数都设置为内部来解决此问题。这样,只有对A
具有内部访问权限的代码才能从A
派生。