10

プロパティが C# Expando クラスに存在するかどうかを確認したいと思います。

Python のhasattr関数によく似ています。hasattr の c# イコールが欲しいです。

このようなもの...

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

2 に答える 2

23

試す:

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

ExpandoObject は明示的に を実装します。KeyIDictionary<string, Object>はプロパティ名です。次に、辞書にキーが含まれているかどうかを確認できます。この種のチェックを頻繁に行う必要がある場合は、小さなヘルパー メソッドを記述することもできます。

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

そして、次のように使用します。

if (HasAttr(yourExpando, "Id"))
{
    //Has property...
}
于 2012-08-20T20:16:54.833 に答える