一連のプラグインをホストするアプリを作成しています。これらのプラグインは通常、2 つのライブラリ.Common
を使用し、プラグインが実装する必要があるインターフェイスなど.UI
を含みます。
現在、プラグインをライセンス対象にする機能を追加している段階です。ILicenseInfoProvider
インターフェイス インスタンス ( ) を定義し、MEF を介してエクスポートするプラグインのみをロードするように、ホスト アプリケーションを変更しました。そのビットは大丈夫です。
ライセンス コードの選択されたプロバイダーがあり、そのライセンス システムにはライブラリの使用が含まれます。ここで、各プラグインがそのシステムを通じてライセンスされることを強制したくありません。さらに、そのシステムのアセンブリへの参照を必要とします。そのため、サードパーティのライブラリを参照するコードを独自のアセンブリ (のようなもの.Licensing.Vendor
) に入れることを計画しています。このようにして、プラグインはそのアセンブリへの参照を追加するだけで、次のようなクラスを含めることができます。
[Export(typeof(ILicenseInfoProvider))]
class MyAssemblyLicenseInfoProvider : BaseVendorLicenseInfoProvider
{
public MyAssemblyLicenseInfoProvider() : base("My Assembly's Product Name")
}
私はその設定にかなり満足しています.1つの厄介なことを除けば、アセンブリには使用中の特定のライセンスシステムに関連する.Licensing.Vendor
単一のクラスしか含まれないということです.BaseVendorLicenseInfoProvider
結局のところ、私の質問は非常に単純です。
そのクラスを独自のアセンブリに配置するのはやり過ぎに思えますか?それとも、すべてのプラグインにサードパーティ ライブラリへの参照を強制的に保持させないことの利点は価値がありますか?