2013-10-31 121 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