2010-10-19 141 views
1

我有一個接口,它定義了一些方法,我有N個類來實現它。我如何註冊所有加載的程序集中的所有類與autofac?Autofac - 註冊插件

回答

1

您將不得不「知道」包含這些類的程序集,您可以使用Assembly.Load(..)自己加載它們。

從那裏,很容易註冊類:

var assemblies = new[]{....}; 

builder.RegisterAssemblyTypes(assemblies) 
      .Where(t => typeof(IMyInterface).IsAssignableFrom(t)) 
      .As<IMyInterface>(); 

更新:去註冊的情況下,你可以使用Autofac內置支持類別:

public class MyService 
{ 
    private readonly IEnumerable<IMyInterface> _services; 
    public MyService(IEnumerable<IMyInterface> services) 
    { 
     _services = services; 
    } 

    public void DoStuffWithServices() 
    { 
     foreach(var svc in _services) 
     { 
      ... 
     } 
    } 
} 
+0

你能給我寫一篇關於如何編寫可擴展調試類的例子,我可以用autofac註冊dinamically?我應該使用模塊嗎?爲什麼? – Stefano 2010-10-21 18:18:36

+0

@Stefano - 嚴肅地說,這個問題根本就沒有意義。它與這個線程有關嗎?如果不是,請創建一個新問題並嘗試解釋您的問題。如果沒有可以理解的問題/場景,我不能也不會給你「codez」。 – 2010-10-21 19:40:13

+0

所以,它真的很簡單...我有N個類實現相同的接口,這些類在不同的程序集...所以我註冊了所有與您的方法找到的類,但我不知道類的名稱,所以如何我能給他們打電話嗎? – Stefano 2010-10-23 16:57:51