我正在编写一个应用程序来承载一系列插件。这些插件通常使用两个库.Common
,.UI
其中包含插件需要实现的接口等。
我现在正在添加插件受许可的功能。我已经修改了我的主机应用程序,使其只加载定义接口实例 () 的插件ILicenseInfoProvider
并通过 MEF 导出它。那一点没问题。
我们有一个选定的许可代码提供商,他们的许可系统涉及到库的使用。现在,我不想强制每个插件都通过该系统获得许可,并且通过扩展,需要引用该系统的程序集。所以,我打算将引用第三方库的代码放在它自己的程序集中(类似于.Licensing.Vendor
)。这样,插件可以简单地添加对该程序集的引用,并包含一个看起来有点像这样的类:
[Export(typeof(ILicenseInfoProvider))]
class MyAssemblyLicenseInfoProvider : BaseVendorLicenseInfoProvider
{
public MyAssemblyLicenseInfoProvider() : base("My Assembly's Product Name")
}
我对这种设置相当满意,除了一件琐碎的事情 -.Licensing.Vendor
程序集将只包含一个类,它BaseVendorLicenseInfoProvider
与正在使用的特定许可系统有关。
所以,毕竟,我的问题很简单:
将该类放在它自己的程序集中似乎有点矫枉过正,还是不强制所有插件保存对第三方库的引用的好处是值得的?