当我尝试将新构造函数添加到扩展另一个类的类时,为什么会出现此错误消息?

时间:2014-04-07 08:57:01

标签: c# asp.net .net constructor

我有以下问题:

我有一个名为 PdfReport 的类,它扩展了以这种方式声明的另一个名为 iTextDocumentBase 的类:

public class PdfVulnerability : iTextDocumentBase
    {
    private DataModel.Vulnerability.Vuln currentVuln;
    ...................................
    ...................................
    }

在这个类中,我试图添加一个新的构造函数,将一个特定的对象作为参数,这一个:

    public PdfVulnerability(DataModel.Vulnerability.Vuln currentVuln){
        this.currentVuln = currentVuln;
    }

我的问题是当我将此构造函数添加到上一个 PdfReport 类时,Visual Studio会给我以下错误消息:

  

' PdfReport.iTextDocumentBase'不包含构造函数   取0个参数

当我尝试将新构造函数添加到扩展另一个类的类时,为什么会出现此错误消息?

TNX

2 个答案:

答案 0 :(得分:1)

那是因为类的构造函数始终调用其基类的构造函数 - 显式或隐式。

在您的情况下,由于您没有指定对任何基类的构造函数的调用,因此推断出对具有0个参数的构造函数的调用。您的代码等同于:

public PdfVulnerability(DataModel.Vulnerability.Vuln currentVuln) : base()
{
    this.currentVuln = currentVuln;
}

显然,这个构造函数不存在于基类iTextDocumentBase中。

检查基类提供的构造函数,并显式调用其中一个。

答案 1 :(得分:1)

如果基类没有定义参数较少的构造函数,并且Child类不会与子类构造函数一起调用基类构造函数。将发生此错误。您必须使用子类构造函数

调用特定的基类构造函数