从TcpClient序列化对象流中转换不同的对象?

时间:2011-08-03 18:39:16

标签: c# .net tcp deserialization tcpclient

我将通过序列化和通过TcpClient发送,在服务器/客户端应用程序之间发送不同的对象类型。当我反序列化流时,我最好如何获得正确的类型?

大多数对象的大小将是< 100字节,但有时可能高达几十万字节。对于这种情况,它将只传输5-10个潜在的类类型。

我想我可以为各种类型添加一系列Try-Catch,看看有什么成功。虽然我正在考虑在流的开头创建一个固定字段,该字段具有可用于通过select语句“手动”识别类型的代码。

请在这里评论一下可能是一个合适的解决方案。

1 个答案:

答案 0 :(得分:0)

我假设对象已经正确反序列化。我会使用一个大的if对象是类型然后......其他...

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);