IServiceCollection - Внедрение зависимостей?Доступен Где? - PullRequest
0 голосов
/ 16 февраля 2019

Я изучаю ядро ​​ASP.NET через видео с множеством сайтов.Парень в видео говорит мне, что я могу добавить «сервис» как одиночный или как переходный процесс, зарегистрировав его в Startup.ConfigureServices.

public class Startup {

    public Startup() {
    }

    public IConfiguration Configuration { get; set; }

    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services) {

        // Register the Greeter as an IGreeter and have the ASP.NET framework register it to be available to anyone who wants an IGreeter
        // Dependency injection?
        services.AddSingleton<IGreeter, Greeter>();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, IGreeter greeter) {
        if (env.IsDevelopment()) {
            app.UseDeveloperExceptionPage();
        }

        app.Run(async (context) => {
            var greeting = greeter.GetGreeting();
            await context.Response.WriteAsync(greeting);
        });
    }
}

Он не очень понимал, кто его создает, каково его время жизни, и где это доступно.Может ли кто-нибудь заполнить эти детали для меня?

Делает ли это то, что я сделал бы с инфраструктурой внедрения зависимостей, такой как Autofac, но в ASP.NET Core она встроена?Или это другое?

1 Ответ

0 голосов
/ 16 февраля 2019

кто его создает, каково его время жизни и где оно доступно.

Среда создаст экземпляр службы со сроком жизни, который вы указали при регистрации в DI-контейнере.,Все ваши зарегистрированные сервисы доступны в проектах, на которые ссылается основной проект, содержащий ваш DI-контейнер.

Делает ли это то, что я сделал бы с инфраструктурой внедрения зависимостей, такой как Autofac, но ASP.NET Core это встроено?Или это отличается?

Все то же самое, что и другие контейнеры DI, такие как AutoFac.DI выполняется с использованием встроенного в ASP.NET Core контейнера DI под названием Microsoft.Extensions.DependencyInjection

...