如何在基类没有定义构造函数时覆盖方法

时间:2017-06-14 16:25:02

标签: c# inheritance constructor

我正在尝试覆盖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解释说我不能继承这样的类 - 所以寻找其他方法来覆盖方法。

1 个答案:

答案 0 :(得分:4)

Inherit an abstract class without any constructor中所述,您无法从不暴露构造函数的类派生。当sealed不是一个选项时,隐藏构造函数通常被明确地作为防止继承的方式。因此,为什么你不能为这种特殊类型做到这一点。

您可以选择:

  • 修改(或要求)DLL以暴露构造函数
  • 看看您是否确实需要从该特定类派生,或者您的代码可以实现一个接口
  • 派生自其他类,如果存在(如C:B),它也从DLL中暴露但具有可访问的构造函数。请注意,如果仔细设计了类层次结构,则不会有这样的类。

另外,您可以向大会的作者询问如何以其他方式解决您的问题(他们很有可能为他们已经考虑过的常见场景提供解决方案)。

相关问题