如何修复ProtoBuf-Net中的枚举错误

时间:2012-10-28 11:06:35

标签: c# serialization protobuf-net

尝试序列化时出现此错误。

Error Message on Serializing

这个问题的答案:

How to map System Enum's in Protobuf.Net

表示这与Flags枚举有关,应该在V2中处理。此处报告的枚举不是Flags枚号:

public enum RunwayDesignator {
    NONE = 0,
    LEFT = 1,
    RIGHT = 2,
    CENTER = 3,
    WATER = 4,
    C = 5,
    L = 6,
    R = 7,
    W = 8,
    A = 9,
    B = 10,
    NOT_APP = 99
}

我假设“16”指的是Enum中的某些内容,尽管没有16个值。我还检查了是否有任何ProtoMember ID为16与此枚举的unages相关 - 没有。序列化的这个枚举的所有用法都是私有字段。

我希望得到一些关于如何处理这个问题的指导。

谢谢

1 个答案:

答案 0 :(得分:1)

嗯 - 这很令人尴尬。问题是确实产生了16的值。所以看起来这是我的某种编程错误。错误消息是枚举中没有16的值,这是真的。

所以我现在可以回去尝试修复我的代码了。 Protobuf-Net无处可怜。

我想这对于看到此错误的其他人可能会有用。找出枚举值的使用位置,并查看代码是否发送了无效值。我不明白的是为什么我在尝试为枚举设置无效索引时没有看到某种运行时错误。我现在需要调查一下。这是答案

Why does casting int to invalid enum value NOT throw exception?

似乎没有为无效的枚举值生成错误,但是protobuf-net确实找到了它们