从Ektron.Cms.Content.Targeting.Rules.RuleTemplate继承时出错

时间:2013-06-07 08:42:39

标签: class inheritance ektron

我有一个名为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。 有人能帮助我知道原因吗?

1 个答案:

答案 0 :(得分:1)

当您使用第二个构造函数实例化类对象时,您看到“不包含带0参数的构造函数”的原因是因为当您调用构造函数时,c#也尝试调用基类上的构造函数,在这种情况下需要一个参数。

在msdn上看到这篇文章:

http://msdn.microsoft.com/en-us/library/ms173115%28v=vs.80%29.aspx

关键部分:

“在这个例子中,在执行构造函数的块之前调用基类的构造函数.base关键字可以带或不带参数使用。构造函数的任何参数都可以用作base的参数,或者作为表达式的一部分。有关更多信息,请参阅base。

在派生类中,如果未使用base关键字显式调用基类构造函数,则默认构造函数(如果有)将被隐式调用。“

并且:“如果基类不提供默认构造函数,派生类必须使用base对基础构造函数进行显式调用。”