将属性反序列化到预先存在的对象中

2024-05-23

是否可以使用任何标准序列化程序来反序列化对象属性,而无需创建新对象?

问题是,所讨论的对象非常复杂(它们只能由特殊工厂创建,并且它们的类型是在运行时动态生成的),但它们有一些已知的属性,我想将它们存储在外部文件(最好是 xml ,但二进制也可以),稍后(可能在应用程序重新启动后),我希望将存储的属性设置回我提供的对象。

似乎所有标准序列化器只能为我生成一个新对象(这也需要一个公共无参数构造函数),我必须从中手动分配所有属性。这与我想避免的手动序列化没有太大区别,因为一组序列化属性非常大,并且可能会在项目生命周期内更改几次。此时,我非常接近编写自己的轻量级序列化器,但也许有人可以建议一种更标准的方法来完成此类事情?


protobuf网络 http://code.google.com/p/protobuf-net/ has a Serializer.Merge允许您反序列化到现有实例的方法。仅写入流中找到的值(不会擦除对象)。

不是微软,但相当稳定。

对此进行扩展;获得处理所有常见场景的强大序列化是(我从痛苦的经验中知道)大量工作。我的建议肯定是尽可能重用现有代码。 protobuf-net 似乎提供了你需要的一切;当前的二进制文件只需要您装饰您的类(非常类似于[DataContract]来自 WCF - 事实上它甚至支持[DataContract] / [DataMember]),但工作已就位,使其甚至可以针对 POCO 工作 - 因此您可以将其与您无法控制的类型一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将属性反序列化到预先存在的对象中 的相关文章

随机推荐