.NET 6 - 将服务注入 program.cs
.NET 6 - Inject service into program.cs
我知道如何在 .NET 5(或更早版本)的 Startup.cs 中进行依赖注入,但我如何在 .NET 6 中对顶级 Program.cs 进行同样的操作?
.NET 5:例如,我可以在 Configure 方法中注入一个 class
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
}
}
如何在 .NET 6 中实现这一点?
在 program.cs
文件中,您可以通过 builder.Services
管理您的服务
比如我在Singleton模式和Scoped的基础上添加了DbContext和两个不同的服务
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
您将您的服务添加到 builder.Services
集合,然后使用
访问它
var myService = services.BuildServiceProvider().GetService<MyService>();
使用 .Net 6 很简单。在配置应用程序服务后执行 GetService 方法并具有 运行 构建方法。
WebApplication? app = builder.Build();
var someService = app.Services.GetService<SomeService>();
someService.DoSomething();
我知道如何在 .NET 5(或更早版本)的 Startup.cs 中进行依赖注入,但我如何在 .NET 6 中对顶级 Program.cs 进行同样的操作?
.NET 5:例如,我可以在 Configure 方法中注入一个 class
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
}
}
如何在 .NET 6 中实现这一点?
在 program.cs
文件中,您可以通过 builder.Services
比如我在Singleton模式和Scoped的基础上添加了DbContext和两个不同的服务
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
您将您的服务添加到 builder.Services
集合,然后使用
var myService = services.BuildServiceProvider().GetService<MyService>();
使用 .Net 6 很简单。在配置应用程序服务后执行 GetService 方法并具有 运行 构建方法。
WebApplication? app = builder.Build();
var someService = app.Services.GetService<SomeService>();
someService.DoSomething();