2011-08-03 42 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