相关疑难解决方法(0)

Protobuf-net序列化枚举值超出范围

C#允许为枚举分配任何整数值.

当我尝试使用enum字段序列化(通过protobuf-net)对象时,该值超出范围,它会抛出异常:没有将wire-value映射到枚举PersonLevel.

我的枚举PersonLevel没有Flags属性.

[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public enum PersonLevel
{
  Unknown = 1
}

[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Person
{
  ...

  public PersonLevel PersonLevel { get; set; }

  ...
}
Run Code Online (Sandbox Code Playgroud)
var ms = new MemoryStream();

var person = new Person
{
  ...
  PersonLevel = (PersonLevel) 500
  ...
};

Serializer.Serialize(ms, person); //No wire-value is mapped to the enum PersonLevel
Run Code Online (Sandbox Code Playgroud)

是否有任何设施可以在不改变业务对象的情况下(也许是任何protobuf attrubutes)?

c# protobuf-net

3
推荐指数
1
解决办法
2996
查看次数

标签 统计

c# ×1

protobuf-net ×1