是否可以将 Protobuf-Net 与没有无参数构造函数的类一起使用?

2024-01-31

使用 Protobuf-Net,我发现在没有无参数构造函数的情况下似乎不可能反序列化一个类,或者我可能会丢失一些东西?

我不想要一些带有无参数构造函数的类。我可以使用某种属性或其他技术吗?


protobuf-net 目前依赖于无参数构造函数的工作。

然而,该构造函数不必是公共的(如果需要的话它将使用反射来调用它 http://code.google.com/p/protobuf-net/source/browse/trunk/protobuf-net/ObjectFactory.cs),因此您可以定义仅供 protobuf-net 使用的所需私有构造函数(添加说明原因的注释)并在那里处理特定的序列化相关问题。

这可以防止 api 的其余部分构造“非法”实例。

Marc 指出,如果您正在谈论最外层的消息对象,您也可以自己创建该对象并调用 Serializer.Merge。但是,如果它需要创建一个对象(因为它当前有一个空实例,或者列表/数组中的新项目),那么它会查找默认构造函数。

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

是否可以将 Protobuf-Net 与没有无参数构造函数的类一起使用? 的相关文章