2013-05-02 86 views
0

我正嘗試使用MEF將插件加載到DI框架中。有多種類型,如:將MEF插件導入DI/IOC容器

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

使用非通用Bind超載您的DI容器:

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