2010-10-30 125 views
1

我正在編寫一個插件系統:每個插件都在自己的程序集中,必須由autofac加載,並由具有設置插件類型的參數的屬性進行簽名。我將能夠在我的asp.net mvc應用程序中按類型解析插件,我該怎麼做?每個插件都由一個抽象類插入並覆蓋預定義的方法。Autofac - 按類型註冊插件

回答

2

RegisterAssemblyTypes()可能是起點,你以後:

Assembly[] assembliesWithPlugins = // find these somehow 
var builder = new ContainerBuilder(); 
builder.RegisterAssemblyTypes(assembliesWithPlugins) 
    .AssignableTo<MyAbstractPluginType>() 
    .WithMetadata(t => GetPluinTypeFromMyAttribute(t)); 

一旦你註冊你的插件這種方式,Autofac的元數據支持,您就可以使用它們(http://code.google.com/p/autofac/wiki/Metadata)。我從你後來的一些問題中推測你已經走上了這條道路。

祝你好運。 尼克

1

我個人會使用MEF這個和使用Autofac's MEF integration

+0

你爲什麼要使用mef?我不知道我是否錯了,但我可以使用autofac元數據或可能命名/鍵控功能? – Stefano 2010-10-30 22:29:48

+0

兩者都是有效的方法 - 如果您的插件將由第三方開發人員編寫,那麼MEF將提供.NET標準機制來定義它們。 – 2010-11-05 01:25:37

+0

對不起,我的假設是,插件將是第三方:) – 2010-11-05 04:56:07

0

在每個插件程序集中創建一個Autofac.Module。在那裏註冊你的插件,並從主應用程序加載你的插件DLL,尋找模塊,在容器中註冊。 然後解決並玩得開心;)。