1

いくつかのメソッドを定義するインターフェースがあり、それを実装する N 個のクラスがあります。ロードされたすべてのアセンブリで見つかったすべてのクラスをautofacで登録するにはどうすればよいですか?

4

1 に答える 1

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)
        {
           ...
        }
    }
}
于 2010-10-21T07:19:56.410 に答える