0

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

2 回答 2

1

VS 不会生成构造函数,C# 编译器会。

如果您自己指定构造函数,将不再有隐式的“0 参数构造函数”。

因此,在您的情况下,您有一个需要 String 并将其传递给其基类的构造函数:

public MultipleChoice(String question) : base(question)

如果编译器在“MultipleChoice 类没有参数为 0 的构造函数”方面给您一个错误,那么您尝试在代码中的某处执行此操作:

new MultipleChoice(); //No argument!

但是你不能这样做,因为当你添加一个接受字符串的构造函数时,你删除了隐含的 0 参数构造函数!

您可以通过传递字符串来解决此问题:

new MultipleChoice("Does this solve your problem?"); //Now with a string argument!
于 2012-12-18T09:48:16.837 回答
0

您是否在 XAML 代码中使用 *MultipleChoice *?

仅当您尝试使用无参数构造函数实例化您的类时,才会出现此消息。除了new MultipleChoice()语句之外,XAML 或依赖注入框架也可以使用无参数构造函数。

每个 XAML 标记对应一个使用无参数构造函数实例化的对象。属性被传递给对象的相应依赖属性。

以下代码将尝试使用无参数构造函数创建 MultipleChoice 对象:

<MultipleChoice question="This is my question"/>

当然,您的课程不会以这种方式工作,因为您尚未将question声明为依赖属性。

除非配置正确,否则像 MEF 这样的依赖注入框架也使用无参数构造函数。

于 2012-12-18T09:48:29.160 回答