1

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

序列化错误信息

这个问题的答案:

如何在 Protobuf.Net 中映射系统枚举

表示这与FlagsEnum 有关,应在 V2 中处理。这里报告的 Enum 不是FlagsEnum:

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”指的是枚举中的某些东西,尽管没有 16 个值。我还检查了是否有任何 16 的 ProtoMember ID 与此枚举的 unsages 相关 - 没有。此枚举的所有被序列化的用法都是私有字段。

我将不胜感激有关如何处理此问题的一些指导。

谢谢

4

1 回答 1

1

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

所以我现在可以回去尝试修复我的代码。Protobuf-Net 没有任何问题。

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

为什么将 int 转换为无效的枚举值不会引发异常?

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

于 2012-10-28T12:13:52.850 回答