TryGetValue メソッドを使用して、辞書セーフレイの特定のプロパティにアクセスしたいと考えています。
たとえば、次のように直接アクセスするエントリ:
jsonObject[prop1][prop2][0][prop3]
これを行う便利な方法はありますか?
TryGetValue メソッドを使用して、辞書セーフレイの特定のプロパティにアクセスしたいと考えています。
たとえば、次のように直接アクセスするエントリ:
jsonObject[prop1][prop2][0][prop3]
これを行う便利な方法はありますか?
これが1つのアイデアです(テストされていません)。IDictionary
少なくとも指定されたキーの数と同じくらいの深さでネストされていることを前提としており、動作しobject
ます (もちろん、これをジェネリックにすることもできます)。
bool TryGetNestedValue (this IDictionary dict, out object value,
params object[] keys)
{
for(int i = 0; i < keys.Length; i++)
{
var key = keys[i];
if (!dict.Contains(key))
{
value = null;
return false;
}
if (i == keys.Length - 1)
{
value = dict[key];
return true;
}
dict = dict[key];
}
throw new ArgumentException("keys");
}