我正在尝试扩展一个没有0参数构造函数的类,因此我不会在我的子类中使用一个,但似乎vs生成一个,为什么以及我有什么需要更改?感谢:
public abstract class BasicQuestPart
{
public String question { get; set; }
public BasicQuestPart(String question)
{
this.question = question;
}
}
class MultipleChoice : BasicQuestPart
{
//In this class I get the 0-arguments error
public MultipleChoice(String question)
: base(question)
{
}
}
答案 0 :(得分:1)
VS不生成构造函数,C#编译器也是如此。
如果您自己指定构造函数,则不再有隐式的“0参数构造函数”。
所以在你的情况下,你有一个构造函数需要一个String并将它传递给它的基类:
public MultipleChoice(String question) : base(question)
如果编译器在“没有构造函数为MultipleChoice类的0参数”的行中给出了错误,那么您尝试在代码中的某处执行此操作:
new MultipleChoice(); //No argument!
但是你不允许这样做,因为你添加了一个带有String的隐式0参数构造函数!
您可以通过传递字符串来解决此问题:
new MultipleChoice("Does this solve your problem?"); //Now with a string argument!
答案 1 :(得分:0)
您在XAML代码中使用* MultipleChoice *吗?
仅当您尝试使用无参数构造函数实例化类时,才会显示此消息。除了 new MultipleChoice()语句之外,无参数构造函数也可以由XAML或依赖注入框架使用。
每个XAML标记对应于使用无参数构造函数实例化的对象。属性将传递给对象的相应依赖项属性。
以下代码将尝试使用无参数构造函数创建MultipleChoice对象:
<MultipleChoice question="This is my question"/>
你的课程当然不会这样,因为你还没有将问题宣布为依赖属性。
依赖注入框架(如MEF)也使用无参数构造函数,除非正确配置。