我有一个名为MyCustomRuleTemplate
的C#类,它继承自Ektron.Cms.Content.Targeting.Rules.RuleTemplate
类。在那里我添加了一个构造函数,如下面的
public MyCustomRuleTemplate(): base("someKey")
{
//Some code here
}
工作正常,没有任何错误。如果我把它作为
public MyCustomRuleTemplate()
{
//Some code here
}
我收到的错误如'Ektron.Cms.Content.Targeting.Rules.RuleTemplate' does not contain a constructor that takes 0 arguments
。
有人能帮助我知道原因吗?
答案 0 :(得分:1)
当您使用第二个构造函数实例化类对象时,您看到“不包含带0参数的构造函数”的原因是因为当您调用构造函数时,c#也尝试调用基类上的构造函数,在这种情况下需要一个参数。
在msdn上看到这篇文章:
http://msdn.microsoft.com/en-us/library/ms173115%28v=vs.80%29.aspx
关键部分:
“在这个例子中,在执行构造函数的块之前调用基类的构造函数.base关键字可以带或不带参数使用。构造函数的任何参数都可以用作base的参数,或者作为表达式的一部分。有关更多信息,请参阅base。
在派生类中,如果未使用base关键字显式调用基类构造函数,则默认构造函数(如果有)将被隐式调用。“
并且:“如果基类不提供默认构造函数,派生类必须使用base对基础构造函数进行显式调用。”