我需要一个比默认.net序列化程序更好的功能的xml序列化库。问题是它不是多态的--假设您有类B:A{ },并且序列化了一个类型B,那么您应该能够对它调用A myBaseType =反序列化(Xml),并在myBaseType变量中返回一个类型B的实例。
我在http://refactormycode.com/codes/710-polymorphic-xml-serializer有一个具有单元测试的实现,序列化库应该能够处理这些单元测试。如果要序列化的对象具有子类型,而子类型也是多态序列化类型,则此实现将不起作用,因此我需要更好的实现。
谢谢!
发布于 2009-01-24 17:39:06
如果您可以处理额外的冗长,那么使用序列化程序将类型信息嵌入到结果流中可能是最好的选择。
.Net提供了SoapFormatter,它过于冗长,并且做了您可能不需要的事情,但是当您反序列化流时,它只会返回适当的对象(不需要指定类型,只需将根对象强制转换为您知道的类型)。
作为一个额外的好处,它将正确地处理对象图中的循环和共享引用。
发布于 2009-01-24 16:41:09
您可以使用.NET的二进制序列化程序吗?或者它需要XML吗?我对.NET的XML处理也有类似的抱怨,特别是在尝试序列化图形而不是树的时候。
在需要XML才能正常工作的地方,我最终只为每个类推出了自己的序列化代码。
发布于 2009-01-24 21:09:30
protobuf-net支持大多数继承路由(即使规范不支持)。有一个已知的小故障(我正在处理它;-p) --但它涵盖了大多数选项。
https://stackoverflow.com/questions/476239
复制相似问题