假设我们有以下三个类:
[ProtoContract]
[ProtoInclude(10, typeof(FirstType))]
[ProtoInclude(20, typeof(SecondType))]
public class Base
{
[ProtoMember(1)]
public int ClassId {get;set;}
}
public class FirstClass : Base
{
...
}
public class SecondClass : Base
{
...
}
并且类 ID(在基类中)和匹配的子类的类型之间存在关系。例如,
var obj1 = new FirstClass() {ClassId = 1}
var obj2 = new SecondClass() {ClassId = 2}
现在让我们假设我们已经序列化了这些对象。问题是:有没有什么好的方法可以通过查看 ClassId 字段来反序列化基于类 ID 值的序列化 protobuf?即,如果序列化的 protobuf 中的 classId 的值为 1,则使用 FirstClass 反序列化剩余的流字节。
谢谢!