gpt4 book ai didi

不需要域对象污染的 C# 高级 XML 序列化程序

转载 作者:行者123 更新时间:2023-11-30 15:12:08 24 4
gpt4 key购买 nike

是否有针对 C# 的 XML 序列化程序的任何封闭或开放源代码项目,这些项目可以在很大程度上序列化任何对象,而无需用大量属性污染我的域对象?这也将处理使用内部泛型类构建的集合的序列化?一个好处是它可以处理接口(interface)类型属性的序列化。另一个好处是它可以序列化具有只读属性的对象(或者至少使用标记为内部的 get 访问器)

最佳答案

好吧,首先定义“高级”,即具体您需要哪些 XmlSerializer 没有的东西。在 POCO 方面,XmlSerializer 有一个重载的 ctor,它接受您曾经想要添加的所有属性,以避免必须将它们添加到您的对象模型中 - 但它确实仍然需要一个公共(public)的无参数构造函数,并且只适用于公共(public)读/写字段/属性。如果您使用这种方法,您应该缓存/重新使用序列化程序。

我不知道有任何类似的替代方案,只是因为在大多数情况下这“已经足够好”——尝试将现有的域对象强制转换为 DTO 通常是错误的。将您的域实体简单地映射到一个新的 DTO 上可能更简单且更易于维护, 具有属性(并具有适当的 ctor/properties/等)。

请注意,对于 ctor/properties 问题,DataContractSerializer一些 答案,但这对 xml 的外观没有那么多的细粒度控制。

关于不需要域对象污染的 C# 高级 XML 序列化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1640514/

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