gpt4 book ai didi

enums - protobuf-net 枚举序列化

转载 作者:行者123 更新时间:2023-12-03 21:41:21 27 4
gpt4 key购买 nike

为了用 protobuf-net 序列化枚举需要做什么?在序列化具有枚举属性的类时,我收到以下错误,如果从属性声明中删除 DataMember 属性,它可以正常工作。

“System.InvalidOperationException:只有数据契约(Contract)类(和列表/数组
此类)可以处理”

最佳答案

我怀疑它们实际上是 2 个不同的场景,但是关于 Andrew 添加的代码示例,这是因为它无法(提前)弄清楚它对默认值会做什么(默认情况下,数据是在接收方视为可选)。有 3 种方法可以解决此问题:

1:添加一个值为 0 的枚举(因为 0 始终是 CLI 默认值为零),例如

public enum SiteType
{
Error = 0,
...

2:告诉它默认使用哪个值:
[ProtoMember(10), DefaultValue(SiteType.Partition)]
public SiteType Type { get; set; }

3:告诉引擎它真的不需要担心它,即它会有一个值:
[ProtoMember(10, IsRequired = true)]
public SiteType Type { get; set; }

关于enums - protobuf-net 枚举序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135569/

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