在扫描时,StructureMap可以应用约定。因此,IFoo => Foo,无需显式注册。

AutoFac中有类似的东西吗?环顾四周,发现没有任何帮助。

谢谢,

最佳答案

对于来自v2的Autofac版本
Autofac2中新的scanning features将imo消除按惯例注册的一些需求。可以说Foo位于Plugins.dll中:

var assembly = Assembly.Load("Plugins");
builder.RegisterAssemblyTypes(assembly)
       .AsImplementedInterfaces();
此注册将获取Foo并将其注册为IFoo
对于低于v2的Autofac版本
您可以使用ContainerBuilder.RegisterTypesMatching。这是一个例子:
var builder = new ContainerBuilder();
builder.RegisterTypesMatching(type => type.IsAssignableFrom(typeof(IFoo)));
var container = builder.Build();

var foo = container.Resolve<Foo>();

09-19 08:15