获取 dotnetcore 中的 DI 容器

本文关键字:容器 DI 中的 dotnetcore 获取 | 更新日期: 2023-09-27 17:57:06

我想使用 DI 容器在我的应用程序的启动配置中获取路由的实例,而不是对实例进行硬编码,有没有办法做到这一点?

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
    if (env.IsDevelopment())
    {
       app.UseDeveloperExceptionPage();
       app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
    app.UseStaticFiles();
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            "default",
            "{controller=Home}/{action=Index}/{id?}");
         // hardcoded dependeny, I'd like to do something like this
         // var instance = container.getInstance<LandingPageRouter>();
         routes.Routes.Add(new LandingPageRouter(routes, new MyWebRequest()));
     });
}

获取 dotnetcore 中的 DI 容器

你试过app.ApplicationServices.GetRequiredService<LandingPageRouter>()吗?

如果这不起作用,则意味着控制器还不是注册服务。