C# 允许将任何整数值分配给枚举。
当我尝试使用值超出范围的枚举字段序列化(通过protobuf-net)对象时,它会引发异常:没有线值映射到枚举PersonLevel。
我的枚举 PersonLevel 没有 Flags 属性。
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public enum PersonLevel
{
Unknown = 1
}
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Person
{
...
public PersonLevel PersonLevel { get; set; }
...
}
var ms = new MemoryStream();
var person = new Person
{
...
PersonLevel = (PersonLevel) 500
...
};
Serializer.Serialize(ms, person); //No wire-value is mapped to the enum PersonLevel
是否有任何设施可以在不更改业务对象(可能是任何 protobuf 属性)的情况下做到这一点?