gpt4 book ai didi

Protobuf-Net ProtoMember "IsRequired"属性用法

转载 作者:行者123 更新时间:2023-12-04 12:12:39 24 4
gpt4 key购买 nike

Protobuf-Net ProtoMember“IsRequired”属性的用途是什么?

如果我向文件中已序列化的类添加新属性(成员),会产生什么影响。如果我使用“IsRequired=true”,它会在不加载值的情况下接受它(因为它不存在)还是应该将值设置为false?如果我将它设置为 false,该值会被正确序列化吗?

最佳答案

根据 Issue 262: ProtoMembers with IsRequired=true aren't really required :

Currently, IsRequired primarily impacts serialization, forcing it to ignore some default rules.



当 IsRequired 为 false(默认值)时,默认值不会被序列化,例如整数值 0 不会被序列化,值 1 会。

当 IsRequired 为 true 时,所有值(包括默认值)都将被序列化。

使用 protobuf-net 进行反序列化目前似乎不受 IsRequired 属性值的影响。但是,如果您使用 Google Protocol Buffers 的不同实现对于反序列化,您可能会看到不同的行为。

如果向现有类添加新属性,并反序列化在添加该属性之前编写的序列化文件,则不会设置新属性。

关于Protobuf-Net ProtoMember "IsRequired"属性用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196905/

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