2016-03-31 5 views
1

iは、クライアント側からAJAXを経由して、WCFメソッドにデータを送信しようとしているシリアライズ動的オブジェクト

public class DynamicParse 
{  

    // other properties 

    public dynamic Value {get;set;} 
} 

// wcf method 
public void PostData(List<DynamicParse> list) 
{ 
    // parse list[0].Value 
} 

WCFメソッドに送られるjavascript配列:

var data = [{ Value : 1 }, { Value : "test" }, { Value : { message : "hello" } }]; 

私の難しさがありますどのように私は "値"プロパティは、オブジェクトのタイプ - > {メッセージ: "こんにちは"} C#のデータを解析することができます

私は反射とjsonシリアライゼーションを試みた今まで成功しませんでした..

ダイナミックタイプなしで指定されたデータを解析する別のオプションはありますか? ここにこの問題に適していますか?

おかげ

+0

'Value'を' object'と入力しようとしましたか? –

答えて

0

まず第一には、JSONには特定のデータ型はありません。あなたはそれをモデルとマッチさせる必要があります。

すべてが動的であるように思えるので、Valueという名前の動的プロパティのデータ型をチェックすることができます。

public class DynamicParse 
{  

    // other properties 

    public dynamic Value {get;set;} 
} 

// wcf method 
public void PostData(List<DynamicParse> list) 
{ 
    // parse list[0].Value 
    foreach(var entry in list) 
    { 
     if(entry.Value is int) 
     { 
      int num = entry.Value; 
     } 
     else if(entry.Value is string) 
     { 
      string someString = entry.Value; 
     } 
     else if(entry.Value is MyCustomClass) 
     { 
      MyCustomClass myClass = entry.Value; 
      // Do something 
     } 
     else 
     { 
      // Do something 
     } 
    }  
} 

プロパティの値の型は、.NETフレームワークによって決定されるため、その内容を確認するだけです。

EDIT:

ます。また、オブジェクトにダイナミックからDynamicParse値のプロパティを変更することができ、欠点は、あなたがそれを手動でキャストする必要がありますです。

public class DynamicParse 
{  

    // other properties 

    public object Value {get;set;} 
} 

ですから、このような値をチェックする必要があります。..ダイナミックについては

if(entry.Value is MyCustomClass) 
{ 
    MyCustomClass someObject = (MyCustomClass)entry.Value; 
} 

を、キャストする必要がちょうど値を代入していないが、オブジェクトのために、あなたはそれをキャストする必要があります。

関連する問題