.net 如何重写不可继承类中的属性?

.net 如何重写不可继承类中的属性?,.net,inheritance,overriding,.net,Inheritance,Overriding,在MSDN文档中,System.Reflection.Assembly有一个名为CodeBase的属性,该属性定义为可重写 Public Overridable ReadOnly Property CodeBase As String 但是,如果我尝试创建一个继承System.Reflection.Assembly的新类,我会收到一条错误消息,告诉我它无法继承。那么我如何重写此属性呢?很遗憾,您不能这样做 尽管程序集类本身被声明为公共,但它只提供一个内部构造函数。这实际上意味着它只能从它自己的

在MSDN文档中,System.Reflection.Assembly有一个名为CodeBase的属性,该属性定义为可重写

Public Overridable ReadOnly Property CodeBase As String

但是,如果我尝试创建一个继承System.Reflection.Assembly的新类,我会收到一条错误消息,告诉我它无法继承。那么我如何重写此属性呢?

很遗憾,您不能这样做


尽管
程序集
类本身被声明为
公共
,但它只提供一个
内部
构造函数。这实际上意味着它只能从它自己的程序集mscorlib中实例化(或继承)。

我认为您不能。虽然
程序集
不是
密封的
在VB.NET中不可继承),但它没有公共构造函数;构造函数是
internal
Friend
在VB.NET中)。因此,它可以被继承,但只能在与其自身(即mscorlib)相同的程序集中继承类型

对于这个问题,我可能建议使用封装而不是继承。我不想知道为什么需要从程序集继承…Stefan,我想从字节数组加载程序集,同时将codebase属性设置为原始程序集文件的位置。我知道你说你不想知道,但我想也许我的理由没有你想的那么糟糕:)把这个作为答案,因为它比另一个快10秒。不太确定,但我真的认为卢克比我快了一点。我可以发誓这一个在按年龄排序的列表中排名靠前。哦,好吧,谢谢你的诚实;)