我想将DI库的autofac更改为简单的进样器。
我的业务层中有一个模块,用于保持数据访问和业务层注册的注册。然后从API注册该模块。我该如何使用简单的注射器?
下面的简单代码。
在业务层。
public class AutofacModules : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.Where(x => x.Name.EndsWith("Service"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
}
}
在WebAPI中。
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterModule(new AutofacModules());
答案 0 :(得分:2)
答案可以在文档中找到:
长话短说,将代码更改为以下内容:
// Your module
public static class BusinessLayerBootstrapper
{
public static void Bootstrap(Container container)
{
var registrations =
from type in Assembly.GetExecutingAssembly().GetTypes()
where type.Name.EndsWith("Service")
from service in type.GetInterfaces()
select new { service, type };
foreach (var reg in registrations) {
container.Register(reg.service, reg.type, Lifestyle.Scoped);
}
}
在WebAPI中。
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
BusinessLayerBootstrapper.Bootstrap(container);