[ASP.NET Core] 확장 메서드를 사용하여 서비스 그룹 등록
- 웹 프로그래밍/ASP.NET & ASP.NET Core
- 2022. 5. 21. 10:15
참고
목적
- ASP.NET Core 에서 확장 메서드를 사용하여 어떻게 서비스 그룹을 등록하는지 학습 진행합니다.
서비스 그룹 등록하기
- ASP.NET Core 프레임워크에서는 관련 서비스 그룹을 등록하는 규칙을 사용합니다.
- 규칙은 단일 Add{GROUP_NAME} 확장 메서드를 사용하여 프레임워크 기능에 필요한 모든 서비스를 등록하는 것입니다.
- 예를 들어 AddControllers 확장 메서드는 MVC 컨트롤러에 필요한 서비스를 등록합니다.
- 다음 코드는 개별 사용자 계정을 사용하는 Razor Pages 템플릿으로 생성되며 확장 메서드 AddDbContext 및 AddDefaultIdentity를 사용하여 컨테이너에 서비스를 추가하는 방법입니다.
using DependencyInjectionSample.Data;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddRazorPages();
var app = builder.Build();
- 서비스를 등록하고 옵션을 구성하는 다음 메서드를 고려합니다.
using ConfigSample.Options;
using Microsoft.Extensions.DependencyInjection.ConfigSample.Options;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.Configure<PositionOptions>(
builder.Configuration.GetSection(PositionOptions.Position));
builder.Services.Configure<ColorOptions>(
builder.Configuration.GetSection(ColorOptions.Color));
builder.Services.AddScoped<IMyDependency, MyDependency>();
builder.Services.AddScoped<IMyDependency2, MyDependency2>();
var app = builder.Build();
- 관련 등록 그룹을 확장 메서드로 이동하여 서비스를 등록할 수 있습니다.
- 예를 들어, 구성 서비스는 다음 클래스에 추가됩니다.
using ConfigSample.Options;
using Microsoft.Extensions.Configuration;
namespace Microsoft.Extensions.DependencyInjection
{
public static class MyConfigServiceCollectionExtensions
{
public static IServiceCollection AddConfig(
this IServiceCollection services, IConfiguration config)
{
services.Configure<PositionOptions>(
config.GetSection(PositionOptions.Position));
services.Configure<ColorOptions>(
config.GetSection(ColorOptions.Color));
return services;
}
}
}
- 나머지 서비스는 유사한 클래스에 등록됩니다.
- 다음 코드는 새 확장 메서드를 사용하여 서비스를 등록합니다.
using Microsoft.Extensions.DependencyInjection.ConfigSample.Options;
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddConfig(builder.Configuration)
.AddMyDependencyGroup();
builder.Services.AddRazorPages();
var app = builder.Build();
- 위와 같이 확장 메서드를 통해서 서비스를 등록할 수 있습니다.
728x90
'웹 프로그래밍 > ASP.NET & ASP.NET Core' 카테고리의 다른 글
[ASP.NET Core] 종속성 주입 (0) | 2022.05.21 |
---|---|
[ASP.NET Core] 서비스 생명주기 예제 (0) | 2022.04.16 |
[ASP.NET Core] 서비스 생명주기 Singleton, Scoped, Transient (0) | 2022.04.15 |
[ASP.NET Core] Dependency Injection 예제 (0) | 2022.04.15 |
[ASP.NET Core] ASP.NET Core Solution 구조 (0) | 2022.04.15 |
이 글을 공유하기