본문으로 건너뛰기
C# 의존성 주입
  1. 포스트/
  2. 인사이트/

C# 의존성 주입

목차

C#에서 의존성 주입(Dependency Injection, DI)은 객체 간의 의존성을 외부에서 주입하는 소프트웨어 디자인 패턴입니다.

의존성 주입 개념
#

  • 의존성 주입은 클래스가 직접 의존 객체를 생성하지 않고, 외부로부터 필요한 객체(의존성)를 받아서 사용하는 방식입니다.
  • 이를 통해 코드의 결합도를 줄이고, 재사용성과 테스트 용이성을 크게 높일 수 있습니다.

주요 주입 방식
#

  • 생성자 주입(Constructor Injection)
    객체 생성 시점에 필요한 의존성을 생성자를 통해 전달받는 방식으로, 가장 권장되는 DI 방법입니다.
  • 속성 주입(Property/Setter Injection)
    public 프로퍼티(setter, 또는 메소드)를 통해 의존성을 주입하는 방식입니다. 주로 선택적 의존성에 사용합니다.
  • 인터페이스 주입(Interface Injection)
    객체가 특정 인터페이스를 구현하도록 강제하여 의존성을 주입하는 방법이지만, C#에서 직접적으로 많이 쓰이진 않습니다.

실전 예시
#

// 생성자 주입 예시
public class UserService
{
    private readonly ILogger _logger;
    public UserService(ILogger logger)
    {
        _logger = logger;
    }
    public void DoSomething()
    {
        _logger.Log("작업이 처리되었습니다.");
    }
}

ASP.NET Core 활용
#

  • .NET 및 ASP.NET Core에서는 DI 컨테이너를 내장하여 Service, Repository 등 계층 구조에서 쉽게 의존성 주입이 가능합니다.
  • AddTransient, AddScoped, AddSingleton 메서드를 통해 Service Lifetime(생명주기) 설정이 가능하며, 각각 인스턴스 생성 규칙이 다릅니다.

장점 요약
#

  • 결합도 감소, 높은 유연성
  • 테스트 코드 작성 용이, 모듈화 용이
  • 객체 생애주기 관리 자동화

C#에서 DI는 유지보수성과 확장성, 테스트 편의성까지 모두 고려할 때 필수적인 패턴으로 자리 잡았습니다.

learn.microsoft.com

Dependency injection in ASP.NET Core

Learn how ASP.NET Core implements dependency injection and how to use it.

Dependency injection in ASP.NET Core
Studio Rainshelter
작성자
Studio Rainshelter

관련 글