私はC#でDynamicObjectを使用しようとしていますが、動的な配列が必要でした。
var d = new dynamic[];
これは正常に動作します。
編集:以下のExpandoObjectを参照してください。
しかし、私はまた、この圧縮された初期化の新しい構文を使用して、その配列にいくつかのデータを入力するのが好きです。
var d = new dynamic[] {
new {
Name = "Some",
Number = 1010
},
new {
Name = "Other",
Number = 2010
}
}
しかし、その場合、すべてのオブジェクトは非動的タイプの「オブジェクト」を取得し、アイテムをループすると例外が発生します。
foreach (dynamic item in d)
{
@item.Name
@item.Number
}
エラー:「オブジェクト」に「名前」の定義が含まれていません。配列項目を間違った方法で初期化しただけだと思います。代わりに動的オブジェクトを追加するにはどうすればよいですか?
編集:新しいコンテンツ:
「動的」には、プロパティを動的に追加する機能がないことに気付きました。
内部ディクショナリ内のすべてのアイテムをプロパティとして公開するExpandoObjectを使用することをお勧めします。しかし残念ながら、ExpandoObjectはこの優れた圧縮作成構文をサポートしていないようであり、コンパイラーは次のように文句を言います。
var d = new ExpandoObject[]{
new ExpandoObject(){
Name="Nnn",
Number=1080
}
}
したがって、答えは次のようになります。それは不可能です。