Простой Инжектор - Создание модуля - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу изменить свой автофак библиотеки DI на простой инжектор.

У меня есть модуль на моем бизнес-уровне, который ведет регистрацию для доступа к данным и регистрации на бизнес-уровне.И я регистрирую этот модуль из 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 голосов
/ 28 декабря 2018

Ответ можно найти в документации:

Короче говоря, измените свой код следующим образом:

// 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);
...