简单注入器-创建模块

时间:2018-12-28 10:40:04

标签: c# dependency-injection simple-injector

我想将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());

1 个答案:

答案 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);
相关问题