31

文字列値と同じ名前のプロパティをExpandoObjectに追加する方法はありますか?

たとえば、私が持っている場合:

string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();

次のようにプロパティProductNumberを作成できます。

obj.ProductNumber = 123;

しかし、obj.ProductNumber文字列に基づいてプロパティを作成できますpropNameか?したがって、プロパティの名前が高度にわからない場合は、この入力に基づいてプロパティを作成できます。ExpandoObjectでこれが不可能な場合、C#の他の領域を調べる必要がありますか?

4

2 に答える 2

44

ExpandoObjectは以下を実装しますIDictionary<string, object>

((IDictionary<string, object>)obj)[propName] = propValue

dynamicインデクサー構文を参照付きで(つまり、キャストなしで)使用できるかどうかは頭からわかりませんが、実際に試して調べることはできます。

于 2012-04-06T19:45:59.517 に答える
18

ExpandoObjectこれを行うには、をにキャストIDictionary<string,object>します。

string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
var dict = (IDictionary<string,object>)obj;
dict[propName] = 123;
于 2012-04-06T19:46:41.073 に答える