2009-03-26 13 views
1

私は、メディアブラウザのシリアル化の必要性のためにproto-buf .Netを使い始めました。未知の継承型のシリアライズとデシリアライズ

新しいシステムには、プラグインで拡張できるエンティティフレームワークがあります。

たとえば、コアライブラリにMediaクラスを定義し、プラグインでSongなどのサブクラスを定義できます。

proto-buf .Netは、コア定義の基本クラスのすべてのサブタイプについて知っている必要があるようです。

は、だから私は、私はまだ存在していないソングのクラスについて何も知らないその時点で

[ProtoInclude(2, typeof(Song))] 

しかし...と私の基本クラスを飾るために期待しています。

ドローイングボードには戻っていますか?私はライブラリが設計されていない何かをしようとしていますか? (著者から)

答えて

1

現在のリリースでは、親に知られているタイプに固定されています。しかし、これは既知の制限であるため、メタモデルを抽象化して実行時に別々に提供できるようにしています(XmlSerializerに情報を提供する方法とほぼ同じです。上記の "2")。

私はこの作業を開始しましたが、完全に機能するには数週間かかることが予想されます(リファクタリングはいくつかの変更をto help compact frameworkと結びつけます)。

だからあなたが数週間待つことができるなら、私は何かを働かせたいと思っています。あなたはまだすべての異なるサブタイプのために(ユニークな、繰り返し可能)タグを生成するいくつかの方法が必要になる

注 - 設定など

+0

これは、もちろん、私が持っている疑問:) –

+0

に正解です私の限られたニーズをサポートするために私の現在のシリアライゼーションの実装を手に入れました。 http://code.google.com/p/videobrowser/source/browse/branches/big_refactor/TestMediaBrowser/TestSerialization.cs –

+0

私が完了したら、後でラインを下ろして、私が使用するために物を移植するかどうかを確認しますprotobuf。あなたがプロパティの継承チェーンをサポートするとき、Jeezのものは複雑になります... –

関連する問題