Kim*_*imi 14 enums protocol-buffers protobuf-net
使用protobuf-net序列化枚举需要做些什么?我在序列化具有枚举属性的类时遇到以下错误,如果从属性声明中删除了DataMember属性,则它可以正常工作.
"System.InvalidOperationException:只能处理数据协定类(以及此类的列表/数组)"
Mar*_*ell 17
我怀疑它们实际上是两种不同的场景,但是对于安德鲁添加的代码示例,这是因为它无法弄清楚(提前)它将对默认值做什么(默认情况下,数据是在接收器处视为可选的).有三种方法可以解决这个问题:
1:添加值为0的枚举(例如,因为0始终是零的CLI默认值)
public enum SiteType
{
Error = 0,
...
Run Code Online (Sandbox Code Playgroud)
2:告诉它默认使用哪个值:
[ProtoMember(10), DefaultValue(SiteType.Partition)]
public SiteType Type { get; set; }
Run Code Online (Sandbox Code Playgroud)
3:告诉它真的不需要担心它的引擎,即它是将有一个价值:
[ProtoMember(10, IsRequired = true)]
public SiteType Type { get; set; }
Run Code Online (Sandbox Code Playgroud)