如果 2.3.0 之前的任何序列化对象包含枚举值并且使用带有 InferTagFromNameDefault 而不是 ProtoMember 的 DataMember,则不会在 2.3.0 或更高版本中正确反序列化。
[DataContract]
public class ClassWithEnum
{
[DataMember]
public MyEnum Enum { get; set; }
}
public enum MyEnum
{
FirstValue,
SecondValue
}
我有这堂课。使用此代码对其进行序列化。
{
RuntimeTypeModel.Default.InferTagFromNameDefault = true;
var v = new ClassWithEnum { Enum = MyEnum.SecondValue };
using (var memoryStream = new MemoryStream())
{
Serializer.Serialize(memoryStream, v);
var bytes = memoryStream.ToArray();
}
}
在 2.3.0 之前,这将导致 byte[] { 8, 2 },而在 2.3.0 之后,这将导致 byte [] { 8, 1 }
有什么办法可以使以后的版本以与早期版本相同的方式进行序列化?
慕桂英546537
相关分类