【发布时间】:2014-07-23 08:45:58
【问题描述】:
考虑这些类定义:
[ProtoContract, ProtoInclude(2, typeof(Class2))]
class Class1
{
[ProtoMember(1)]
public string Field1 { get; set; }
}
[ProtoContract]
class Class2 : Class1
{
[ProtoMember(1)]
public string Field2 { get; set; }
}
我正在努力实现以下目标:
using (var ms = new MemoryStream())
{
var c1 = new Class1 { Field1 = "hello" };
Serializer.Serialize<Class1>(ms, c1);
ms.Position = 0;
var c2 = Serializer.Deserialize<Class2>(ms);
}
但我得到以下异常:Unable to cast object of type 'ProtoBufTest.Class1' to type 'ProtoBufTest.Class2'
我真的不明白这个问题;我的理解是,在反序列化时,Protobuf 应该只将传入的流视为字节的集合,那么为什么它显然首先反序列化为 Class1 对象,然后尝试将其放入 Class2 中?
【问题讨论】:
标签: c# protobuf-net