我在一个大型项目中将旧版本的 protobuf 更新为当前版本(使用的版本大约有 1-2 年的历史。我不知道版本)。可悲的是,较新的版本引发了异常
ProtoReader.cs 第 292 行中的 CreateWireTypeException
在以下测试用例中:
enum Test
{
test1 = 0,
test2
};
static public void Test1()
{
Test original = Test.test2;
using (MemoryStream ms = new MemoryStream())
{
Serializer.SerializeWithLengthPrefix<Test>(ms, original, PrefixStyle.Fixed32, 1);
ms.Position = 0;
Test obj;
obj = Serializer.DeserializeWithLengthPrefix<Test>(ms, PrefixStyle.Fixed32);
}
}
我发现枚举不应该直接在类之外序列化,但是我们的系统太大而无法简单地将所有枚举包装在类中。这个问题还有其他解决方案吗?它仅适用于序列化和反序列化DeserializeWithLengthPrefix
抛出异常。
测试用例在旧版本中运行良好,例如 protobuf-net 的 r262。