Imagine that I have a dynamic variable:
dynamic d = *something*
Now, I create properties for d
which I have on the other hand from a string array:
string[] strarray = { 'property1','property2',..... }
I don't know the property names in advance.
How in code, once d
is created and strarray is pulled from DB, can I get the values?
I want to get d.property1 , d.property2
.
I see that the object has a _dictionary
internal dictionary that contains the keys and the values, how do I retrieve them?
I don't know if there's a more elegant way with dynamically created objects, but using plain old reflection should work:
var nameOfProperty = "property1";
var propertyInfo = myObject.GetType().GetProperty(nameOfProperty);
var value = propertyInfo.GetValue(myObject, null);
GetProperty
will return null
if the type of myObject
does not contain a public property with this name.
EDIT: If the object is not a "regular" object but something implementing IDynamicMetaObjectProvider
, this approach will not work. Please have a look at this question instead: