0

我有一个名为的 C# 类MyCustomRuleTemplate,它是从类继承的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。任何人都可以帮我知道为什么会这样吗?

4

1 回答 1

1

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

在 msdn 上看到这个帖子:

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

关键部位:

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

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

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

于 2013-06-19T13:41:36.187 回答