2017-03-18 21 views
0

ネストされたディクショナリをそのタイプのネストされたクラスベースに変換しようとしています。 たとえば、 、このタスクを実行することは非常に容易であるJavaScriptでタイプ別にネストされた辞書

T Convert<T>(IDictionary<string, object> input, Type classType) 
{ 
    // Do something. 
    return T; 
} 

:私はこの辞書があります。

{ 
    "owner": { 
     "name": { 
      "first": "Linh", 
      "last": "Nguyen" 
     }, 
     "age": "Nguyen" 
    }, 
    "power": { 
     "index": "1", 
     "range": "5" 
    } 
} 

をそして私は、この入れ子になったクラスがあります。

public class AccountRegistrationViewModel 
    { 
     /// <summary> 
     /// Account owner. 
     /// </summary> 
     [Required] 
     public Owner Owner { get; set; } 

     /// <summary> 
     /// User age. 
     /// </summary> 
     [Required] 
     public int Age { get; set; } 

     /// <summary> 
     /// Account photo. 
     /// </summary> 
     [Required] 
     public List<HttpFile> Photos { get; set; } 
    } 

    public class Owner 
    { 
     public Name Name { get; set; } 
    } 

    public class Name 
    { 
     public string First { get; set; } 

     public string Last { get; set; } 
    } 

をそして、私はこの機能を持っていますしかし、現在のところ、私はC#を使用してこのタスクを達成する方法を知らない。

誰かが私を助けてくれますか?

ありがとう、

+2

あなたの辞書は正確に何ですか?それは何らかの理由でjsonとして表示されるプリミティブな値ですか? '' age '': "Nguyen" '? MCVEを作成した方が良いでしょう。これは、値を受け取って辞書を作成する方法です。その質問に投稿してください。 – Igor

+0

また、変換したいものが分かっている場合は、ここでジェネリックを使用するのはなぜですか?ジェネリックスを使用する目的はありません。 – Igor

+0

私はWeb API用のメディアフォーマッタを構築しようとしています。 – Redplane

答えて

0

入れ子になっている辞書をクラスに変換したい人向けです。

実際には、Web API 2用の新しいマルチパート/フォームデータフォーマッタを作成しています。Web API 2用のフォーマッタをいくつか試しましたが、ファイルのアップロード時にネストしたクラスを処理できませんでした。

https://gist.github.com/Danielku15/bfc568a19b9e58fd9e80 How create a MultipartFormFormatter for ASP.NET 4.5 Web API

Here私の代わりのマルチパート/フォームデータフォーマッタです。

私の実装は最良ではないかもしれませんが、少なくとも後で改善することができます。 奇跡のおかげで反射から来ます。

関連する問題