在Autofac中调用所有ISomething实例

Pau*_*aul 3 autofac

我有一个接口ISomething与方法Start.我想得到这个接口的所有实现(在多个程序集中,主要的和所有引用的),并在应用程序启动时调用Start方法.如何使用Autofac 2.4.4.705执行此操作?

ppi*_*icz 8

你可以解决

 IEnumerable<ISomething>
Run Code Online (Sandbox Code Playgroud)

并为每个人调用Start

忘了提一下,你应该首先注册ISomething的所有实现.

Assembly[] assemblies = ...;
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(assemblies).AssignableTo<ISomething>().As<ISomething>();
var container = builder.Build();
Run Code Online (Sandbox Code Playgroud)

其中"assemblies"是您要注册的程序集数组.