公共类扩展了内部类

时间:2012-06-25 14:00:49

标签: c#

我有一个内部课A可以完成很多工作,我有一组继承自课程{BDE的其他课程1}}。当然这不会起作用,因为编译器会抱怨公共类无法扩展内部类(请参阅this以获得解释)。

我不希望A公开,因为我不希望我的用户继承它。我希望他们只使用ABD

我知道我可以使用E隐藏Intellisense中的类,但用户仍然可以使用反射访问它:(

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:5)

假设A位于程序集 A 中,BDE位于程序集 BDE < / em>,您可以在 A 上声明InternalsVisibleTo attribute以使 BDE 成为朋友程序集。像这样,BDE将能够看到A

但是,您无法继承A,因为超类的可见性不如子类低。您可以通过声明A public ,同时使其所有构造函数 internal 来解决此问题。这样,只有内部访问A的代码才能从A派生。