AutoFac自动装配约定

Joh*_*nes 12 ioc-container inversion-of-control autofac

StructureMap能够在扫描时应用约定.因此IFoo => Foo,没有明确的注册.

AutoFac中有类似的东西吗?环顾四周,找不到任何有用的东西.

谢谢,

Pet*_*old 17

适用于v2的Autofac版本

Autofac2中的新扫描功能将消除一些按惯例注册的需求.让我们说Foo生活在Plugins.dll中:

var assembly = Assembly.Load("Plugins");
builder.RegisterAssemblyTypes(assembly)
       .AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud)

此注册将获取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>();
Run Code Online (Sandbox Code Playgroud)