我有一个内部课A
可以完成很多工作,我有一组继承自课程{B
,D
,E
的其他课程1}}。当然这不会起作用,因为编译器会抱怨公共类无法扩展内部类(请参阅this以获得解释)。
我不希望A
公开,因为我不希望我的用户继承它。我希望他们只使用A
,B
,D
。
我知道我可以使用E
隐藏Intellisense中的类,但用户仍然可以使用反射访问它:(
有没有办法实现这个目标?
答案 0 :(得分:5)
假设A
位于程序集 A 中,B
,D
和E
位于程序集 BDE < / em>,您可以在 A 上声明InternalsVisibleTo
attribute以使 BDE 成为朋友程序集。像这样,B
,D
和E
将能够看到A
。
但是,您无法继承A
,因为超类的可见性不如子类低。您可以通过声明A
public ,同时使其所有构造函数 internal 来解决此问题。这样,只有内部访问A
的代码才能从A
派生。