2013-10-31 122 views
1

我將一個vb項目轉換爲c#;
一切正常,除了這一行:將vb DirectCast轉換爲c#

information = DirectCast(jsonserializer.Deserialize(jsonString, GetType(List(Of formData))), List(Of formData)) 

我創建了一個類(FORMDATA)剛剛一樣VB和JSON字符串是一樣的VB。

public class formData 
{ 
    private string part; 
    private string key; 
    private string val; 
    public formData(string part, string key, string val) 
    { 
     this.part = part; 
     this.key = key; 
     this.val = val; 
    } 

    public string Part 
    { 
     get { return part; } 
     set { part = value; } 
    } 

    public string Key 
    { 
     get { return key; } 
     set { key = value; } 
    } 

    public string Value 
    { 
     get { return val; } 
     set { val = value; } 
    } 
} 

我該怎麼辦?
我必須使用「http://json.codeplex.com/」?

+0

DirectCast可以轉換爲C#作爲一個演員。也就是說:VB.NET中的DirectCast(myOjbect,myType)等於(myType)myObject在C#中 – varocarbas

回答

1

Directcast在VB中與C#中的類型相同。

所以,我相信您的代碼會是這個樣子:

var jsonserializer = new JavaScriptSerializer(); 
var information = jsonserializer.Deserialize(jsonString, typeof(List<formData>)) as List<formData>; 

var jsonserializer = new JavaScriptSerializer(); 
var information = (List<formData>)jsonserializer.Deserialize(jsonString, typeof(List<formData>)); 

兩者之間的區別是,如果轉換失敗,而後者,前者將返回null會拋出異常。有關於所以這裏鑄造類型和as之間的大討論:

Difference between type cast and 'as' cast

+1

它應該是類似於'information =(List )jsonserializer.Deserialize(jsonString,typeof(List ));' – sloth

+0

轉換應該永遠不會失敗,因爲反序列化器知道要反序列化的類型(我希望這句話有意義:-) – sloth

+0

最初錯過了第二個參數,謝謝。 – paqogomez