A
我有一个做很多事情的内部类,我还有一组其他类B
,它们从D
类E
继承A
。当然这不会起作用,因为编译器会抱怨公共类无法扩展内部类(请参阅this以获得解释)。
我不想A
公开,因为我不希望我的用户继承它。我希望他们只使用B
, D
, E
.
我知道我可以使用 Intellisense 隐藏该类,[EditorBrowsable(EditorBrowsableState.Never)]
但用户仍然可以使用反射访问它:(
有没有办法可以做到这一点?
假设它A
在程序集A中,并且B
,D
并且E
在程序集BDE中,您可以在A上声明InternalsVisibleTo
属性以使BDE成为友元程序集。像这样,,,就能看到。B
D
E
A
不过,您不能从 继承A
,因为超类的可见性不能低于子类。您可以通过声明A
public同时使其所有构造函数为internal来解决此问题。这样,只有具有内部 访问权限的代码A
才能从A
.