2012-05-02 28 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