我需要对某些类进行 XML 序列化,这些类在某些情况下不遵守规则和准则,而这些是使内置序列化工作所必需的。这包括接口(interface)类型的属性和没有 setter 的属性。
我知道如何实现 IXmlSerializable,但这可能需要很多工作;因为大多数属性不需要特殊处理。有什么方法可以让我只编写代码来处理这些“特殊属性”,并让标准的 XML 序列化程序序列化它知道如何序列化的属性?
此外,欢迎提出关于开源库或类似库的建议,它们可以更好地将对象序列化为 XML 而无需太多自定义代码。
最佳答案
有一个工具叫做 Automapper该工具将两种类型相互映射。对于您的问题,您可以构建一个标准的符合类型并将非标准类型映射到这个类型。大多数属性将使用自动映射器进行映射。您可以使用自己的方法映射的特殊对象。
首先你必须设置你的映射:
Mapper.CreateMap<ITestSequence, TestSequence>();
Mapper.CreateMap<ITestBlock, TestBlock>();
然后映射你的对象:
Mapper.Map(srcTb, dstTb);
这将设置所有公共(public)属性。剩下的你可以自己做。
关于c# - XML 序列化 - 处理特殊情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3230414/