我有以下问题:
我有一个名为 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
答案 0 :(得分:1)
那是因为类的构造函数始终调用其基类的构造函数 - 显式或隐式。
在您的情况下,由于您没有指定对任何基类的构造函数的调用,因此推断出对具有0个参数的构造函数的调用。您的代码等同于:
public PdfVulnerability(DataModel.Vulnerability.Vuln currentVuln) : base()
{
this.currentVuln = currentVuln;
}
显然,这个构造函数不存在于基类iTextDocumentBase
中。
检查基类提供的构造函数,并显式调用其中一个。
答案 1 :(得分:1)
如果基类没有定义参数较少的构造函数,并且Child类不会与子类构造函数一起调用基类构造函数。将发生此错误。您必须使用子类构造函数
调用特定的基类构造函数