日期:2014-05-18  浏览次数:20679 次

反序列化时如何识别是哪个对象?
一个C#的C/S程序,采用异步方法,通过SoapFormatter将对象序列化发送,接收时反序列化对象.
问题时发送多个对象,接收时,如何在反序列化时得知要反序列化的是哪个对象?


------解决方案--------------------
如果不知道类型就按Object来反序列化,然后使用GetType()得到类型信息再做出操作决定
------解决方案--------------------
一般是要用“接口”来接收反序列化出的“实例”的。
要不然你怎么调用实例的方法呢?
而且我觉得只有这样才能体现多态的好处——后期绑定,最终还是要绑定的嘛!
------解决方案--------------------
定义一个基类A,基类有个属性m;
要序列化反序列化的几个类都继承这个基类,每个子类的m属性值是不同的;
序列化的是子类A1,A2...
反序列化时用基类A,即A a = (A)formatter.Deserialize(netstrm);
然后if(a.m==1){ A1 a1=(A1) a; ... }
else if(a.m==2){ A2 a2=(A2) a; ... }

我就是这样做的