Я хотел бы узнать, существует ли свойство в классе C # Expando.
очень похоже на hasattr функция в питоне. Я бы хотел, чтобы для hasattr был эквивалент C #.
что-то вроде этого...
if (HasAttr(model, "Id"))
{
# Do something with model.Id
}
Я хотел бы узнать, существует ли свойство в классе C # Expando.
очень похоже на 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");