4

抽象クラスから継承するクラスで構成されたツリー構造を構築するプログラムを作成していますNode。私のプログラムには、さまざまなタイプのノードが組み込まれています。ただし、より上級のユーザーが私のライブラリを参照して、独自の派生物を作成できるようにしたいと考えていますNode。これらのプラグイン ライブラリは、アプリの起動時に読み込まれますAssembly.Load()。したがってNode、アプリケーションで使用されるすべての潜在的な型は、実行時までわかりません。

さらに、これらのツリーを XML ファイルとの間でシリアライズおよびデシリアライズできるようにしたいと考えています。XMLSerializer、DataContractSerializer、および IXmlSerializable の実装について、ある程度の経験があります。通常、私は DataContractSerializer を使用します。これは、通常、IXmlSerializable を実装するよりも少ないコードで済み、XmlSerializer ではできないプライベート フィールドをシリアル化できるためです。

しかし、このプロジェクトでは、他のユーザーが私のクラスから派生したクラスを作成し、それらをシリアル化するために必要なコードや属性を追加する必要があることも考慮する必要があります。

これを考慮すると、あるシリアル化メカニズムを別のメカニズムよりも優先する必要がある理由はありますか?

4

1 に答える 1

2

シリアライゼーションとデシリアライゼーションがアプリケーション内でのみ発生し、他の誰もがシリアライズされたデータを読み取れる必要がない場合、シリアライゼーション形式は API に影響しません: API のユーザーに関する限り、不透明なファイルにシリアル化し、同じファイルから逆シリアル化します。

この場合、必要に応じてバイナリにシリアル化できる DataContractSerializer を使用します。

于 2010-11-19T19:46:30.970 に答える