代码之家  ›  专栏  ›  技术社区  ›  Maarten Vissers

.NET6-将服务注入程序。反恐精英

  •  0
  • Maarten Vissers  · 技术社区  · 2 年前

    我知道如何在初创企业中进行依赖注入。cs进来。NET 5(或之前的版本),但如何对顶级程序执行相同的操作。cs进来。第六网?

    .NET 5:例如,我可以在Configure方法中注入一个类

    public class Startup
    {
        public IConfiguration _configuration { get; }
        public IWebHostEnvironment _env { get; set; }
    
        public Startup(IConfiguration configuration, IWebHostEnvironment env)
        {
            _configuration = configuration;
            _env = env;
        }
    
        public void ConfigureServices(IServiceCollection services)
        {
            // TODO
        }
    
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IToInjectService serviceToInject)
        {
            // USE SERVICE
        }
    }
    

    我怎样才能做到这一点呢。第六网?

    2 回复  |  直到 2 年前
        1
  •  2
  •   Wim Ombelets    2 年前

    您将您的服务添加到 builder.Services 收集,然后使用

    var myService = services.BuildServiceProvider().GetService<MyService>();
    
        2
  •  0
  •   Reza Heidari    2 年前

    里面 program.cs 您可以通过以下方式管理服务的文件: builder.Services

    例如,我添加了DbContext和两个基于Singleton模式和作用域的不同服务

    var builder = WebApplication.CreateBuilder(args);
    
    // Add services to the container.
    builder.Services.AddDbContext<MyDbContext>(options =>
    {
        // options.UseSqlServer(...);
    });
    builder.Services.AddSingleton<IMyService, MyService>();
    builder.Services.AddScoped<IMySessionBasedService, MySessionBasedService>();
    

    有关更多信息,请查看 Code samples migrated to the new minimal hosting model in ASP.NET Core 6.0