[ASP.NET Core] 확장 메서드를 사용하여 서비스 그룹 등록

참고


목적

  • 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

이 글을 공유하기

댓글

Designed by JB FACTORY