检查,看是否有物业的C#为Expando类中存在(check to see if a propert

2019-09-21 09:32发布

我想看看如果一个属性在C#为Expando类存在。

很像hasattr Python函数中。 我想对于hasattr C#的equalant。

这样的事情...

if (HasAttr(model, "Id"))
{
  # Do something with model.Id
}

Answer 1:

尝试:

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

一个ExpandoObject明确实现IDictionary<string, Object> ,其中键是属性名。 然后,您可以检查,看看字典包含的关键。 如果你需要经常做这种检查,你也可以写一个小帮手方法:

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

并使用它像这样:

if (HasAttr(yourExpando, "Id"))
{
    //Has property...
}


Answer 2:

据vcsjones回答这将是更漂亮到:

private static bool HasAttr(this ExpandoObject expando, string key)
{
    return ((IDictionary<string, Object>) expando).ContainsKey(key);
}

接着:

dynamic expando = new ExpandoObject();
expando.Name = "Test";

var result = expando.HasAttr("Name");


文章来源: check to see if a property exists within a C# Expando class