文字列値と同じ名前のプロパティをExpandoObjectに追加する方法はありますか?
たとえば、私が持っている場合:
string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
次のようにプロパティProductNumberを作成できます。
obj.ProductNumber = 123;
しかし、プロパティを作成できますかobj.ProductNumber
文字列に基づくpropName
?そのため、プロパティの名前が高度にわからない場合は、この入力に基づいて作成できます。 ExpandoObjectでこれが不可能な場合、C#の他の領域を調べる必要がありますか?
ExpandoObjectはIDictionary<string, object>
を実装します。
((IDictionary<string, object>)obj)[propName] = propValue
dynamic
参照を使用して(つまり、キャストなしで)インデクサー構文を使用できるかどうかは頭からわかりませんが、試してみて調べることはできます。
これを行うには、ExpandoObject
をIDictionary<string,object>
にキャストします。
string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
var dict = (IDictionary<string,object>)obj;
dict[propName] = 123;