检查C#Expando类中是否存在属性

eiu*_*165 8 c# dynamic expandoobject

我想看看C#Expando类中是否存在属性.

很像python中的hasattr函数.我想为hasattr提供c#equalant.

像这样的东西......

if (HasAttr(model, "Id"))
{
  # Do something with model.Id
}
Run Code Online (Sandbox Code Playgroud)

vcs*_*nes 21

尝试:

dynamic yourExpando = new ExpandoObject();
if (((IDictionary<string, Object>)yourExpando).ContainsKey("Id"))
{
    //Has property...
}
Run Code Online (Sandbox Code Playgroud)

ExpandoObject显式实现IDictionary<string, Object>,其中Key是属性名称.然后,您可以检查字典是否包含密钥.如果您需要经常进行此类检查,您还可以编写一个小助手方法:

private static bool HasAttr(ExpandoObject expando, string key)
{
    return ((IDictionary<string, Object>) expando).ContainsKey(key);
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

if (HasAttr(yourExpando, "Id"))
{
    //Has property...
}
Run Code Online (Sandbox Code Playgroud)