2016-03-31 61 views
1

我試圖將數據發送到WCF方法,通過AJAX從客戶端序列化動態對象

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框架確定,因此您只需檢查它是什麼。

編輯:

你也可以改變從動態DynamicParse值的屬性對象,其缺點是,你必須手動施放它。

public class DynamicParse 
{  

    // other properties 

    public object Value {get;set;} 
} 

所以,你必須檢查這樣的價值..

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

對於動態,無需投剛分配的價值,但對於對象,你要投它。