gpt4 book ai didi

c# - .NET XML 序列化

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:40 25 4
gpt4 key购买 nike

我想将混合数据序列化和反序列化为 XML。经过一些搜索,我发现有两种方法可以实现:System.Runtime.Serialization.Formatters.Soap.SoapFormatterSystem.Xml.Serialization.XmlSerializer。然而,两者都不符合我的要求,因为:

  • SoapFormatter 不支持泛型类型的序列化
  • XmlSerializer 拒绝序列化实现 IDictionary 的类型,更不用说它远不如“正常”序列化(例如 see this SO question)易用

我想知道是否存在没有这些限制的实现?我发现了一些尝试(例如 CustomXmlSerializerYAXLib 中建议的 related SO question ),但它们似乎也不起作用。

我正在考虑自己编写这样的序列化程序(尽管这看起来确实不是一件容易的事),但后来我发现自己受到 CLR 的限制,因为我无法创建类型的对象实例即使我正在使用反射,也没有无参数的构造函数。我记得曾在某处读到过, System.Runtime.Serialization 中的实现在反序列化对象时以某种方式绕过了正常的对象创建机制,但我不确定。关于如何做到这一点的任何提示?
(见编辑#3)

有人可以用这个为我指明正确的方向吗?

编辑:我使用的是 .NET 3.5 SP1。

编辑 #2:明确地说,我想要一个尽可能像使用 BinaryFormatter 的解决方案,这意味着它应该需要尽可能少的额外代码和注释。

编辑 #3:通过一些额外的谷歌搜索,我找到了一个名为 System.Runtime.Serialization.FormatterServices.GetUninitializedObject 的 .NET 类。实际上可以返回指定类型的“归零”对象,这对反序列化有很大帮助(如果我自己实现的话)。不过,我仍然想找到一个现有的解决方案。

最佳答案

我使用 datacontractserializer 类取得了巨大的成功。 here

这是一篇比较序列化器的好文章 link

关于c# - .NET XML 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4575232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com