公共类扩展内部类

  • 本文关键字:内部类 扩展 c#
  • 更新时间 :
  • 英文 :


我有一个内部类A可以做很多事情,我有一组其他类BDE继承自类A。当然,这是行不通的,因为编译器会抱怨公共类无法扩展内部类(有关解释,请参阅此处)。

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

我知道我可以使用[EditorBrowsable(EditorBrowsableState.Never)]对智能感知隐藏该类,但用户仍然可以使用反射:(访问它

有没有办法实现这一点?

假设A在程序集 A 中,

并且BD E 在程序集 BBE 中,则可以在 A 上声明 InternalsVisibleTo 属性,使 BDE 成为友节点。像这样,BDE将能够看到A

尽管如此,您仍然不能从A继承,因为超类的可见性不能低于子类。您可以通过声明A公共同时将其所有构造函数都设置为内部来解决此问题。这样,只有对A具有内部访问权限的代码才能从A派生。

最新更新