イムは、C#でDynamicObjectを使用しようとしている、と私はダイナミックの配列を必要と:ダイナミックな配列| ExpandoObject |で圧縮された初期化構文
正常に動作しますvar d = new dynamic[];
。
EDIT:下記のExpandoObjectを参照してください。
しかし、私はまた、この圧縮されたが、新しい構文を初期化すると、いくつかのデータとその配列を埋めるのが好き:
var d = new dynamic[] {
new {
Name = "Some",
Number = 1010
},
new {
Name = "Other",
Number = 2010
}
}
しかし、その場合には、すべてのオブジェクトは、項目を非ダイナミック型の「オブジェクト」とループを取得
foreach (dynamic item in d)
{
@item.Name
@item.Number
}
エラー: 'オブジェクト'に '名前'の定義が含まれていません。私はちょうど間違った方法で配列の項目を初期化すると思います。代わりに動的オブジェクトを追加する方法は?
EDIT:新しいコンテンツ:
私は「ダイナミック」の実現には、動的にプロパティを追加する機能を持っていません。
私は、内部ディクショナリ内のすべてのアイテムをプロパティとして公開するExpandoObjectを使用する方がよいでしょう。しかし残念ながらExpandoObjectは、この素敵な圧縮された構文を作成サポートしていないようだ、とコンパイラが文句:
var d = new ExpandoObject[]{
new ExpandoObject(){
Name="Nnn",
Number=1080
}
}
だから、答えはちょうどかもしれません:それは不可能です。
あなたはよろしいです匿名型の配列を必要としないだけですか? – Ani
これはASP.NET MVC3でですか? –
'dynamic'は' object'ですが、C#コンパイラはこれを別々に扱い、 'dynamic'のすべてのアクセスをDLRに渡します。 – thecoop