0

以下のように、ユーザー設定に応じて使用されるクラスを動的に変更する必要があるメソッドがあります。クラス dEnvelope は、すべてのサブクラスを埋めて同じ方法で使用するために、そのプロパティも初期化する必要があります。これらの異なる Year クラスはすべて正確な構造を持っています。ただし、ビジネスロジックは内部メソッドが異なります

    dynamic dEnvelope;

    if (UserYear==2013)
        dEnvelope = new Years.Y2013.DataEnvelope();
    else
        dEnvelope = new Years.Y2012.DataEnvelope();


    dEnvelope.InnerClass= Activator.CreateInstance(Type.GetType(dEnvelope.InnerClass));

ただし、Activator.CreateInstance 行を実行するとエラーが発生します。

{"値を null にすることはできません。\r\nパラメータ名: typeName"}

動的タイプの使用法について何か不足していますか? 実行時に使用する正しいクラスを動的に選択するより良い方法はありますか?

4

1 に答える 1

0

最初にコンストラクターを介してクラス「Years」の変数を初期化し、メソッドにアクセスしようとする必要があると思います。すなわち dEnvelope = new Years().Y2013.DataEnvelope();

また、理解を深めるためにコード スニペットを表示してください。

于 2013-03-12T08:49:53.420 に答える