【发布时间】:2013-05-17 22:44:55
【问题描述】:
我使用的是 DataContractSerializer,到目前为止它提供了我需要的一切。 现在我需要另外两个功能,而且我已经知道 DataContractSerializer 无法实现这些功能。
- 我需要能够将某些字段序列化为 XmlComments
- 某些成员应直接序列化为包含对象中的 Xml-Attribute。
XmlSerializer 既不支持 opt-in,也不支持我需要的字段/私有,所以很遗憾,这是不可能的。
在使用 DataContractSerializer 作为基础时,我能否以某种方式制作我自己的序列化程序,以尊重现有的“XmlAttribute”-Attribute 和我的自定义“XmlComment”-Attribute?
也许已经有一个第三方序列化程序可以提供我需要的东西?不过没找到。
我不介意编写自定义序列化程序,但我想尽可能多地重用现有代码。
【问题讨论】:
-
“XmlSerializer 既不支持选择加入也不支持字段/私有” -> 为什么不能将字段/私有公开为公共属性?
-
我在这个上有循环代码。您应该创建一个完全独立的数据模型对象,其唯一目的是 data 的序列化/反序列化。将该数据模型单独转换为您的业务对象/从您的业务对象转换。您的业务对象可以通过这种方式维护其私有字段/实现,并且您的数据模型对象可以专注于公共属性或各种 XML 属性修饰以满足您需要的架构。
-
@ChrisSinclair 虽然他不想使用 XML cmets...即使是专为序列化设计的 DTO,也需要一些自定义序列化。
标签: c# serialization reflection attributes datacontractserializer