2012-05-02 23 views
0

我想反序列化从HTTP Web请求接收到的流体作为响应。但问题是,当反序列化必须作为特定类型完成。我有多个Get的,他们有不同的回应(一个返回类型p,其他返回类型q)。我想有一个通用的方法,可以对任何类型进行反序列化,并返回给我一些概括性的东西,当类型种姓会返回我所需的值时。http响应返回类型反序列化到一个特定类型

+0

我可以尝试catch块,并试图反序列化它,但这将是一个糟糕的编程习惯。我还有什么其他选择? – Rain

回答

0

魔术酱知道要填充哪种类型。一旦你的,创建一个通用的解串器是很容易的:

public object Deserialize(string serialized, Type T) { 
    if (string.IsNullOrEmpty(serialized)) { 
     return null; 
    } 
    XmlSerializer xs = new XmlSerializer(T); 
    MemoryStream ms = new MemoryStream(StringToBytes(s) ?? new byte[0]); 
    XmlTextWriter tw = new XmlTextWriter(ms, Encoding.UTF8); 
    return xs.Deserialize(ms); 
} 

它也很容易把它变成一个通用的方法。

+0

那么我没有其他的选择来找出返回的类型。所以我做了什么是我添加了一个HTTP头('ResponseType'),它携带在服务端的响应中返回的对象的类型。在客户端,我刚刚检查了响应头并相应地反序列化了它。 – Rain