web-dev-qa-db-ja.com

匿名型を動的に作成しますか?

プロパティ名を動的に設定できる匿名型を作成したい。匿名型である必要はありません。私が達成したいのは、オブジェクトのプロパティ名を動的に設定することです。 ExpandoObjectでも構いませんが、辞書は機能しません。

あなたの提案は何ですか?

52
ward87

ExpandoObjectのみが動的プロパティを持つことができます。

Edit:これは Expand Object の使用例です(MSDNの説明から):

dynamic sampleObject = new ExpandoObject();
sampleObject.TestProperty = "Dynamic Property"; // Setting dynamic property.
Console.WriteLine(sampleObject.TestProperty );
Console.WriteLine(sampleObject.TestProperty .GetType());
// This code example produces the following output:
// Dynamic Property
// System.String

dynamic test = new ExpandoObject();
((IDictionary<string, object>)test).Add("DynamicProperty", 5);
Console.WriteLine(test.DynamicProperty);
54
Andrew Bezzub

ExpandoObjectをディクショナリにキャストし、そのように入力すると、設定したキーがExpandoObjectのプロパティ名として表示されます...

dynamic data = new ExpandoObject();

IDictionary<string, object> dictionary = (IDictionary<string, object>)data;
dictionary.Add("FirstName", "Bob");
dictionary.Add("LastName", "Smith");

Console.WriteLine(data.FirstName + " " + data.LastName);
33
stevemegson