是否有针对C#的XML序列化程序的任何封闭或开源项目,可以在大多数情况下序列化任何对象而无需使用大量属性污染我的域对象?那还将处理使用内部泛型类构建的集合的序列化?奖励是它可以处理序列化接口类型属性。另一个好处是它可以序列化具有只读属性的对象(或至少使用标记为内部的get访问器)
答案 0 :(得分:5)
好吧,首先定义“高级”,即XmlSerializer
没有的具体。就POCO而言,XmlSerializer
有一个重载的ctor,它接受你 想要添加的所有属性,以避免必须将它们添加到你的对象模型中 - 但它仍然需要一个public parameterless constructor,仅适用于公共读/写字段/属性。如果使用这种方法,你应该缓存/重新使用序列化器。
我不知道有任何类似的选择,只是因为在大多数情况下这是“足够好” - 并且尝试将现有域对象暴力破解为DTO通常是错误的。简单地将您的域实体映射到 归属的新DTO(并且具有适当的ctor / properties / etc)可能更简单,更易于维护。
请注意,对于ctor / properties问题,DataContractSerializer
有一些答案,但这对xml的内容没有那么精细的控制。
答案 1 :(得分:0)
XmlSerializer几乎总是人们想要的,他们只是不知道它实际上是如此灵活。