我正在尝试覆盖Base类的方法,这是第三方DLL。
我得到了一个例外:
类型'B'没有定义构造函数。
有没有办法在派生类中覆盖方法?
下面的代码段。
Public Class A : B
{
Public A()
{
}
// method to override from Class B
public override object BaseMethod()
{
}
}
我还检查了The type '...' has no constructors defined,但它没有谈到继承,而只是新建一个实例。
Inherit an abstract class without any constructor解释说我不能继承这样的类 - 所以寻找其他方法来覆盖方法。
答案 0 :(得分:4)
如Inherit an abstract class without any constructor中所述,您无法从不暴露构造函数的类派生。当sealed
不是一个选项时,隐藏构造函数通常被明确地作为防止继承的方式。因此,为什么你不能为这种特殊类型做到这一点。
您可以选择:
C:B
),它也从DLL中暴露但具有可访问的构造函数。请注意,如果仔细设计了类层次结构,则不会有这样的类。另外,您可以向大会的作者询问如何以其他方式解决您的问题(他们很有可能为他们已经考虑过的常见场景提供解决方案)。