如何反序列化对象而不知道它的类型或类的存在以进行强制转换

时间:2012-12-03 14:55:49

标签: xml class object serialization reflection

大家好,请帮我一个忙,我有很多具有相同结构的自定义类,例如它们都有属性模式,对象的属性对我来说很重要,因为我想保存很多这些对象从许多应用程序中的许多类作为日志记录系统,因此我无法在一个解决方案中收集所有类以进行反序列化。

如果我在我的解决方案中有类,我可以使用反射来获取它们的属性和值并在数据表中导出属性,或者在反序列化之后,将对象强制转换为该类的类型,但我的问题是我如何反序列化对象和获取对象属性的“类型”,“名称”和“值”,而不需要在我的解决方案中使用它们的类。

在这种情况下,当我想要反序列化时,我收到此错误消息:“根元素丢失。”

1 个答案:

答案 0 :(得分:0)

正如您所提到的,您可以通过反射检查反序列化的对象,并确保除非您以某种方式具有对象的类型,否则将是您可以拥有的所有内容,我的意思是之前在其他程序集或同一程序集中编译。这意味着你无疑需要装配!

但不要失去勇气。通过反射,您可以从对象中检索任何您想要的内容,除了对象类所在的域所必需的内容。例如,您可以拥有Product类的反序列化实例,但您无法识别Product类正在做什么以及它的存在哲学是什么。这些东西放在Product的域中,与Customer,Order,ProductLine,Stock和该域的其他类相关。

但是再次希望你可以通过为你的类定义一些标准行为来克服这些行为,这些行为是由所有域中的所有类实现的。