问题描述
我有一个ASP.Net Core 3.1应用程序,并且我有多个plugins
通过MEF加载。简化的界面如下所示:
public interface IImportPlugin
{
string Name { get; }
string Category { get; }
string Title { get; }
string Description { get; }
}
[Export(typeof(IImportPlugin))]
public sealed class ImportCustomers : IImportPlugin
{
private ICustomerService customerService;
//Other services...
[ImportingConstructor]
public ImportCustomers()
: base()
{
//Set properties
}
}
如何将服务实例注入插件?
解决方法
作为问题的答案,您可以通过使用Import Attribute或GetExports Methods获得两种解决方案。
用于导入(由构造函数导入):
num
对于GetExports:
[Export(typeof(IImportPlugin))]
public sealed class ImportCustomers : IImportPlugin
{
private ICustomerService _customerService;
//Other services...
[ImportingConstructor]
public ImportCustomers([Import(typeof(ICustomerService))] ICustomerService customerService)
: base()
{
//Set properties
_customerService = customerService ;
}
}