2011-07-26 17 views
4

MEFを使用して、プラグインベースのアプリケーションを1つ作成しました。だから私はプラグインによって実装される1つのインターフェイスライブラリを作成しました。プラグインとの下位互換性

が、私はPluginInterfaceライブラリにインターフェースを定義してきたように、下位互換性、

約質問があり、その後、IPluginに変更を加えた場合、今、私は(古いインタフェースを実装する)プラグインの古いバージョンをロードすることはできません。

どうすればアプリケーションの下位互換性を達成できますか?

インターフェイスを変更することはできません以前のバージョンでcompatable滞在するためには、私に

おかげ

答えて

1

を提案をお願いします。インターフェースを変更したい場合は、別の新しいインターフェース(例えばIPlugin2)を導入する必要があります。

+0

拡張インターフェースがあるドメインライブラリのリリースを再コンパイルしても、これは成立しませんか? IOW、実際のホストアプリケーションとは別の解決策として自分の「ドメイン」を維持すべきではないでしょうか?この方法で、私のドメインを再コンパイルせずにホストに変更を加えて、拡張機能を壊すことができますか? – IAbstract

+0

@IAbstractあなたが求めていることは完全にはわかりませんが、アセンブリを再コンパイルしても必ずしもABIが破られるわけではありません。また、アセンブリに新しい機能を追加しながらABI/APIを壊すのを避けるために使用できるテクニックもあります。この回答に記載されているように、新しい名前のバージョン管理されたインターフェイスを導入することは1つの方法です。もう一つは 'XmlReaderSettings'のようなクラスを通してパラメータを受け取ることです。古いバージョンに対してコンパイルされたコードを破壊することなく、より多くのプロパティを追加することができます。 – binki