我想看看 C# Expando 类中是否存在属性。
很像 python 中的hasattr函数。我想要 hasattr 的 c# 等价物。
像这样的东西......
if (HasAttr(model, "Id"))
{
# Do something with model.Id
}
我想看看 C# Expando 类中是否存在属性。
很像 python 中的hasattr函数。我想要 hasattr 的 c# 等价物。
像这样的东西......
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>
,其中 Key 是属性名称。然后,您可以检查字典是否包含密钥。如果你需要经常做这种检查,你也可以写一个小辅助方法:
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");