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