check to see if a property exists within a C# Expando class
10,583
Try:
dynamic yourExpando = new ExpandoObject();
if (((IDictionary<string, Object>)yourExpando).ContainsKey("Id"))
{
//Has property...
}
An ExpandoObject explicitly implements IDictionary<string, Object>
, where the Key is a property name. You can then check to see if the dictionary contains the key. You can also write a little helper method if you need to do this kind of check often:
private static bool HasAttr(ExpandoObject expando, string key)
{
return ((IDictionary<string, Object>) expando).ContainsKey(key);
}
And use it like so:
if (HasAttr(yourExpando, "Id"))
{
//Has property...
}
Author by
FelipeKunzler
Updated on June 19, 2022Comments
-
FelipeKunzler about 2 years
I would like to see if a property exist in a C# Expando Class.
much like the hasattr function in python. I would like the c# equalant for hasattr.
something like this...
if (HasAttr(model, "Id")) { # Do something with model.Id }
-
Martin_W about 11 yearsIt would perhaps be nice, but C# won't allow an extension method on a dynamic object. See [stackoverflow.com/questions/12501773/….
-
ZunTzu about 11 yearsWhat about adding a dynamic method named HasAttr to the expando object? Something like this: expando.HasAttr = new Func<bool>((string key) => ((IDictionary<string, Object>) expando).ContainsKey(key));