2011-02-06 11 views
2

私はprotobuf.netの周りに構築されたシステムを持っています、私はエンドユーザーが実装すると期待抽象クラス(foo)を公開しています。抽象クラスはprotobuf.netによって直列化されています。現在、私がfooの実装をシリアライズしようとすると、私はエラーを取得:protobuf.netでサブクラス化

Unexpected type found during serialization; types must be included with ProtoIncludeAttribute; found bar passed as foo

これは理にかなって、私はバーに関するシステムに語っていないので、私がfooとしてバーを渡すときには、混乱してしまいます。私のライブラリを使って作業をするのは簡単です(普通のprotobuf.netのように、フィールドを通常のprotobuf.netのように直列化できるようにマーキングするのが望ましい)。

編集:もちろん、私はprotoincludeを使うことはできません。ベースライブラリのソースコードを変更する必要があります。

答えて

1

v1では、ベースは子供について知るために装飾する必要があります。v2では、この制限が削除されています。実行時にモデルを作成し、これはまだ属性を読み取ることができますが、これはすべて並んでいます(好きな場合は、さまざまな種類の異なるアプローチを使用できます)。

ただし、実行を非表示にすることもできます呼び出し側が何らかの詳細を知りたくない場合、timeTypeModelの詳細は独自のAPIの背後にあります。

v2はトランクから構築することができ、かなり安定しています。しかし、いくつかのTODOアイテムがありますが、主に完全な互換性のために完了する必要がある場合があります。ほとんどの人はこれらのケースを見ません。

+0

v1からv2に移行するにはどのくらいの労力が必要ですか?私は非常にタイトな時刻表で走っています:/ – Martin

+0

@Martinあなたが(ほんの少しの)コーナーケースを打つことがない限り、かなり最小限です - あなたが望むなら、仕事をしたい、と私はあなたのために空白を埋めることができるだろうと私は見るでしょう... –

+0

マルク、ありがとうMarc、私はそれを自分自身でやろうとし、私は立ち往生した場合私はあなたに戻ってきます:) – Martin

関連する問題