Mar*_*tin 6 .net c# serialization .net-2.0
是否有可能使用XmlSerializer将其数据反序列化为现有的类实例而不是新的实例?
这在两种情况下会有所帮助:
如果默认情况下不可能,它应该使用反射(在反序列化后复制每个属性),但这将是一个丑陋的解决方案.
基本上,你不能。XmlSerializer
是严格的建设性的。您可以进行自定义的唯一有趣的事情XmlSerializer
是自己实现IXmlSerializable
并完成所有操作 - 这不是一个有吸引力的选项(并且它仍然会使用默认构造函数等创建新实例)。
xml
要求严格吗?如果您可以使用不同的格式,protobuf-net支持将片段合并到现有实例中,如下所示:
Serializer.Merge(source, obj);
Run Code Online (Sandbox Code Playgroud)
我认为你的反思想法是正确的。
由于您可能有一个围绕 XML 操作的包装器,因此您可以接收目标对象,通常将反序列化到一个新对象中,然后通过仅一一复制包含非默认值的属性来执行类似于克隆的操作。
实现它不应该那么复杂,它会像就地反序列化一样从应用程序的其余部分寻找消费者。
归档时间: |
|
查看次数: |
3734 次 |
最近记录: |