我有一个名为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一样的错误。有没有人能告诉我为什么会这样?
发布于 2013-06-19 21:41:36
当使用第二个构造函数实例化您的类对象时,您看到“不包含接受0个参数的构造函数”的原因是因为当您调用构造函数时,c#也会尝试调用基类上的构造函数,在本例中,基类使用一个参数。
请参阅msdn上的这篇文章:
http://msdn.microsoft.com/en-us/library/ms173115%28v=vs.80%29.aspx
关键部分:
“在此示例中,基类的构造函数是在执行构造函数的块之前调用的。base关键字可以与参数一起使用,也可以不与参数一起使用。构造函数的任何参数都可以用作base的参数,或用作表达式的一部分。有关详细信息,请参阅base。
在派生类中,如果没有使用base关键字显式调用基类构造函数,则会隐式调用默认构造函数(如果有)。“
和:“如果基类不提供默认构造函数,则派生类必须使用base显式调用基构造函数。”
https://stackoverflow.com/questions/16979801
复制相似问题