2016-09-28 18 views
1

私は動的に生成された辞書を持っています。辞書では、1つのKeyに対して複数の値があります。これらの複数の値のいずれかの値にアクセスしようとしています。これまでのコード:C#で動的辞書の値にアクセスする方法は?

 var result = new Dictionary<string, object>(); 
     var dictionary = deserialisedResult as IDictionary<string, object>; 
     foreach (var item in dictionary) 
     { 
      result.Add(item.Key, item.Value); 
     } 
     object o = result; 
     string[] names = o.GetType().GetProperties().Select(p => p.Name).ToArray(); 
     foreach (var prop in names) 
     { 
      object propValue = o.GetType().GetProperty(prop).GetValue(o, null); 
      var value = propValue.GetValue(o,null); 
     } 

これは機能しません。

「リソース」の値を取得する必要があります。ライン後

enter image description here

+2

まず、この辞書を取得するためにペイロード/何かを逆シリアル化したようです。そのサンプルを見てうれしいです。 1つのキーに複数の値があると言ったとき、それは単一のキーに割り当てられた値のリストを持つ辞書という意味ですか? –

+0

希望の出力が何であるかを教えてください。現在、何がエラーまたは出力になっていますか?この時計は、少なくとも私には十分な窓ではありません。 – kuskmen

+1

IDictionary >というように、1つのキーに値のリストをシリアル化すると、これを処理するにはもっと情報が必要です。 本質的に辞書であるオブジェクトoのプロパティを調べると、本質的に辞書のキーではなく、インスタンスの型が持つすべてのプロパティを文字通り参照しています。 –

答えて

1

が出てここでの問題を引き起こしている:

string[] names = o.GetType().GetProperties().Select(p => p.Name).ToArray();

GetType()Objectベースのために、私は時計を追加すると

は、私はそれのようなネストされた参照しますクラス型ではTypeが生成されず、pあなたが探しているPropertyInfo[]を投稿してください。さもなければ、Dictionary<string,object>タイプのためにそれを実行しようとしていても、関係する情報を見つけるのに役立つプロパティはありません。それについてTypeは常にDictionary

何が必要なの辞書からキーのコレクションを取得し、辞書に格納された値を取得するためにそれらを使用している

foreach (var key in result.Keys) 
{ 
    var value = result[key]; 
} 

ソリューションが提供されたコードに基づいているだろうあなたがさらなる要件を持っているかどうかは疑問です。

関連する問題