我想通过protobuf-net向单个通道发送混合消息类型。我将来自各种来源的以下示例放在一起,并在第一次反序列化时引发StackOverflow异常。Protobuf-net StackOverflow异常与派生类型
我对此有何看法?
FWIW它创建的文件的十六进制内容是 “A2 06 02 08 02 08 01 AA 06 02 08 04 08 03”
谢谢,格雷格
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
[ProtoInclude(100, typeof(Derived1))]
[ProtoInclude(101, typeof(Derived2))]
public class Base { public int Old; }
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Derived1 : Base { public int New1; }
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Derived2 : Base { public int New2; }
class Program
{
static void Main(string[] args)
{
Base b1 = new Derived1() { Old = 1, New1 = 2 };
Base b2 = new Derived2() { Old = 3, New2 = 4 };
using (var fs = File.Create(@"C:\test.bin"))
{
Serializer.Serialize(fs, b1);
Serializer.Serialize(fs, b2);
}
Base msg3, msg4;
using (var fs = File.OpenRead(@"C:\test.bin"))
{
msg3 = Serializer.Deserialize<Base>(fs);
msg4 = Serializer.Deserialize<Base>(fs);
}
Console.WriteLine(((Derived1)msg3).New1);
Console.WriteLine(((Derived2)msg4).New2);
Console.ReadLine();
}
}
非常感谢你,是没有的伎俩! – 2015-04-03 14:58:17