次のような.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の使用とBaseMetaTypeのAddSubTypeの呼び出しを検討し始めましたが、その後、すべての派生クラスのオプションのフィールドを使用してBaseの型定義を作成するようです(つまり、必要なものとは逆になります)
自分で階層をたどることができるかもしれないと思いましたが、TypeModelを見ると、Deserialiseへの型の提供をサポートしているようですが、シリアル化中にvalue.GetType()を使用します。それでも、私がこれをどのように行うかは完全には明確ではありませんでした。ProtoWriterを使用してすべてのフィールドを手動で書き込む唯一のオプションはありますか?これは私が現在試みていることですが、もっと簡単な方法があることを望みました。