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# コンパイラーは生成します。

コンストラクターを自分で指定すると、暗黙的な「引数なしのコンストラクター」はなくなります。

したがって、あなたの場合、 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 * を使用していますか?

このメッセージは、パラメーターなしのコンストラクターを使用してクラスをインスタンス化しようとした場合にのみ表示されます。新しい MultipleChoice()ステートメントとは別に、パラメーターなしのコンストラクターは XAML または依存性注入フレームワークでも使用できます。

各 XAML タグは、パラメーターなしのコンストラクターを使用してインスタンス化されるオブジェクトに対応します。属性は、オブジェクトの対応する依存関係プロパティに渡されます。

次のコードは、パラメーターなしのコンストラクターを使用して MultipleChoice オブジェクトを作成しようとします。

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

questionを依存関係プロパティとしてまだ宣言していないため、クラスはもちろんこの方法では機能しません。

MEF のような依存性注入フレームワークも、適切に構成されていない限り、パラメーターなしのコンストラクターを使用します。

于 2012-12-18T09:48:29.160 に答える