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