2011-08-03 44 views
1

我將在服務器/客戶端應用程序之間發送不同的對象類型,通過序列化並通過TcpClient發送。當我對流進行反序列化時,如何最好地獲得正確的類型?從TcpClient序列化對象流中投射不同的對象?

大多數對象大小將是< 100個字節,但偶爾可能會達到幾十萬字節。對於這種情況,將僅傳輸5-10個潛在類別類型。

我想我可以爲各種類型放一系列Try-Catch,看看成功了。儘管我正考慮在流的開始處創建一個固定字段,該字段的代碼可用於通過select語句「手動」識別類型。

請評論什麼可能是一個適當的解決方案在這裏。

回答

0

我假設對象已經正確反序列化。我會用一個很大的對象是type然後... else ...

object deserializedObject = Deserialize(....); 
if (deserializedObject is string) 
    ProcessString ((string)deserializedObject); 
else if (deserializedObject is byte[]) 
    ProcessBytes ((byte[])deserializedObject); 
else if (deserializedObject is Uri) 
    ProcessUri ((Uri)deserializedObject); 
else 
    throwOrLog (deserializedObject); 
+0

呃,謝謝!我想我想象一個不存在的問題。 – bretddog