Приведение различных объектов из потока сериализованных объектов TcpClient? - PullRequest
1 голос
/ 03 августа 2011

Я буду отправлять объекты разных типов между серверными / клиентскими приложениями путем сериализации и отправки через TcpClient. Когда я десериализирую поток, как лучше всего получить правильный тип?

Размер большинства объектов будет <100 байт, но иногда он может достигать нескольких сотен тысяч байт. Для этого случая будет передано только 5-10 потенциальных типов классов. </p>

Полагаю, я мог бы поставить серию Try-Catch для разных типов и посмотреть, что получится. Хотя я думаю о создании фиксированного поля в начале потока, содержащего код, который можно использовать для «ручной» идентификации типа с помощью оператора select.

Пожалуйста, прокомментируйте, что может быть правильным решением здесь.

1 Ответ

0 голосов
/ 03 августа 2011

Я предполагаю, что объекты уже десериализованы правильно. Я бы использовал большой, если объект типа, то ... еще ...

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