我想看看如果一个属性在C#为Expando类存在。
很像hasattr Python函数中。 我想对于hasattr C#的equalant。
这样的事情...
if (HasAttr(model, "Id"))
{
# Do something with model.Id
}
我想看看如果一个属性在C#为Expando类存在。
很像hasattr Python函数中。 我想对于hasattr C#的equalant。
这样的事情...
if (HasAttr(model, "Id"))
{
# Do something with model.Id
}
尝试:
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...
}
据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");