将MEF插件导入DI / IOC容器

时间:2013-05-02 11:47:35

标签: c# generics dependency-injection inversion-of-control mef

我正在尝试使用MEF将插件加载到DI框架中。有多种类型,例如:

ISocket
IBroadcastSocket
INodeTask

目前我已经以这种方式设置了我的代码:

[Import]
INodeTask NodeTaskPlugin { get; set; }

并试图像这样导入插件:

Injector.Instance.Bind<typeof(INodeTask), NodeTaskPlugin.GetType()>();

在尝试上面的代码行时,R#抱怨它无法找到正确的方法:

  

无法找到方法组。你打算调用这个方法吗?

以下是我希望使用的Bind声明:

void Bind<TBase, TDerived>() where TDerived : TBase

我的问题是两个方面:

  1. 如何解决上述错误?
  2. 是否有更有效的方法将插件导入IoC容器?

1 个答案:

答案 0 :(得分:1)

使用DI容器的非通用Bind重载:

Bind(typeof(INodeTask), NodeTaskPlugin.GetType());