没有0参数构造函数,但没有使用

时间:2012-12-18 08:06:52

标签: c# .net xaml

我正在尝试扩展一个没有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)
    {
    }
}

2 个答案:

答案 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)也使用无参数构造函数,除非正确配置。