C# 反序列化时如何识别是哪个对象 30

比如:反序列化时得到的是object对象,我怎么知道它具体是何种对象(因为程序中会涉及好多种对象,比如登陆的,注册的,加好友的,下线的等等)!我在网上找了一上午,大体的解... 比如:反序列化时得到的是object对象,我怎么知道它具体是何种对象(因为程序中会涉及好多种对象,比如登陆的,注册的,加好友的,下线的等等)!

我在网上找了一上午,大体的解决方法是这样的:

1.定义一个这些对象的基类,其中有个CommandType字段(这里我觉得枚举好些)。序列化时用的是具体的某个类,

反序列化时用的是基类,然后再根据CommandType的不同将其强制转换为所需的类型。

这样做倒是解决了问题,不过类型多时就不是很好了。总之,我感觉不是一个好办法。

2.有的人说用obj.GetType();可是说的很含糊。我猜想他的意思是不是用Type类型得到具体类型的实例。可是具体怎么做,

我不会,还望知道的人,不吝赐教!

不管是新的想法还是方法2的补充,我都很感激,谢谢!
展开
 我来答
如此放肆的美馆2a
2009-09-07 · TA获得超过583个赞
知道小有建树答主
回答量:1042
采纳率:0%
帮助的人:390万
展开全部
目前也在研究中,我的方法是在序列化的时候把类型的FullName作为xml根标签的属性一块写进去,反序列化的时候先读这个属性,Type.GetType(×××),这样就能得到类型了,相比效率应该要高些,不过还不是最好的办法,有个XmlInclude特性可以利用,不过现在还没研究出来咋用。另外说下一楼的,反射是.NET的精华,不要拿自己的无知来对别人说三道四的
12666954
2009-08-24 · TA获得超过386个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:335万
展开全部
关心一些莫名其妙的问题。
你编程你要用什么类型就去序列化什么类型,反序列化时候你肯定有一个你想得到的类型,如果你要得到的类型是DataTable,你反序列化出来是obj
就直接
DataTable dt=obj as DataTable;就OK乐。
如果obj是dt那就会得到一个DataTable,如果不是就得到一个NULL。管其他那么多干什么,静关心些不该关心的事
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f03059727
2009-08-28 · 超过18用户采纳过TA的回答
知道答主
回答量:194
采纳率:0%
帮助的人:79.6万
展开全部
补充2的方法:用映射

上网查询C#映射就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式