如何覆盖不可继承的类中的属性?

时间:2009-10-20 10:46:47

标签: .net inheritance override

在MSDN文档中,System.Reflection.Assembly有一个名为CodeBase的属性,该属性被定义为可覆盖。

Public Overridable ReadOnly Property CodeBase As String

但是,如果我尝试创建一个继承System.Reflection.Assembly的新类,我会收到一条错误消息,告诉我它不能被继承。那么如何覆盖这个属性呢?

2 个答案:

答案 0 :(得分:5)

不幸的是你不能这样做。

虽然Assembly类本身声明为public,但它只提供internal构造函数。这实际上意味着它只能从它自己的程序集mscorlib中实例化(或继承)。

答案 1 :(得分:3)

我认为你不能。虽然Assembly不是sealed(VB.NET中的NotInheritable),但它没有公共构造函数;构造函数是internal(VB.NET中的Friend)。所以它可以继承,但只有与自身相同的程序集中的类型(即mscorlib)。