我想通過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