给定一个看起来像这样的 .proto:
message Base {
string Dummy = 1
}
message Derived {
Base Super = 1
string Parp = 2
}
...还有一些 C# 类似:
public class Base {
public string Dummy;
}
public class Derived : Base {
public string Parp
}
如何在 protobuf-net 中自定义序列化以便能够做到这一点?最初,我开始考虑使用 TypeModel 并为 Base MetaType 调用 AddSubType,但后来它似乎为 Base 创建了类型定义,其中包含所有派生类的可选字段(即相反的方式与我需要的方式)
我想我可能可以自己走层次结构,但看看 TypeModel,它似乎支持将类型提供给 Deserialise,但它在序列化过程中使用 value.GetType()。即便如此,我如何做到这一点也不完全清楚。我唯一的选择是使用 ProtoWriter 手动编写每个字段吗?这是我目前正在尝试的,但我希望有更简单的方法。