6

次のクラスがあるとしましょう。

public class MyClass {
   public string Data1 { get; set; }
   public MyOtherClass Data2 { get; set; }
   // 50+ other properties...
}

public class MyOtherClass {
   public string OtherData1 { get; set; }
   // More properties
}

そのクラスをインスタンス化し、すべてのデータを入力するコードがあります。そのオブジェクトをテストに使用したいと思います。単純に構造を XML にシリアライズし、後で再ロードすることができました。しかし、私が本当に望んでいるのは、オブジェクト ツリー全体をコードに組み込むことです。言い換えると:

MyClass myClass = new MyClass {
    Data1 = "Hello",
    Data2 = new MyOtherClass {
        OtherData1 = "World",
        // More...
    },
    // More...
}

すべてを自分で書くこともできますが、多数のプロパティとサブクラスがあるため、数時間かかり、エラーが発生しやすくなります。これが私の質問です。オブジェクトが与えられた場合、そのオブジェクトにデータを入力するコードをどのように生成しますか?

4

2 に答える 2

1

T4 テンプレートを作成します。本当にリモートではありますが、必要なものと同様のことをしている例を確認してください。

于 2012-07-19T17:44:21.153 に答える
0

データ形式に json を使用し、http://json2csharp.comのようなものを使用して、json との間でシリアル化および逆シリアル化するために使用するクラスを生成します。または、既存のクラスに注釈を付けてシリアル化します。

これにより、任意のネストが処理され、保守が容易になります。再コンパイルせずに値を編集することもできますが、これは通常は良いことです。リンクは、特定の型を指定する方法、列挙型を処理する方法、オブジェクト リンクなどの例にもつながります。

おそらく、コードから絶対に生成しなければならない理由を指定していただければ、より良い答えが得られるでしょう。

于 2012-07-26T19:52:38.443 に答える