Add property to ExpandoObject with the same name as a string
16,671
Solution 1
ExpandoObject implements IDictionary<string, object>
:
((IDictionary<string, object>)obj)[propName] = propValue
I don't know off the top of my head whether you can use the indexer syntax with a dynamic
reference (i.e., without the cast), but you can certainly try it and find out.
Solution 2
Cast the ExpandoObject
to an IDictionary<string,object>
to do this:
string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
var dict = (IDictionary<string,object>)obj;
dict[propName] = 123;
Author by
Paul
Updated on June 14, 2022Comments
-
Paul about 2 years
Is there a way to add a property to an ExpandoObject with the same name as a string value?
For example, if I have:
string propName = "ProductNumber"; dynamic obj = new System.Dynamic.ExpandoObject();
I can create the property ProductNumber like:
obj.ProductNumber = 123;
But, can I create the property
obj.ProductNumber
based on the stringpropName
? So, if I don't know what the name of the property will be in advanced, I can create it based on this input. If this is not possible with ExpandoObject, any other areas of C# I should look into?