상세 컨텐츠

본문 제목

[C#] 의존성 주입(Dependency Injection, DI)

개발 & 프로그래밍

by Jiung. 2025. 9. 24. 22:51

본문

반응형

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는 유지보수성과 확장성, 테스트 편의성까지 모두 고려할 때 필수적인 패턴으로 자리 잡았습니다.

 

 

Dependency injection in ASP.NET Core

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

learn.microsoft.com

 

반응형

'개발 & 프로그래밍' 카테고리의 다른 글

Epoll의 기초 개념 및 사용 방법  (0) 2019.01.05
소켓의 우아한 연결 종료  (0) 2017.10.09
EPOLL 함수 정리 및 기초  (0) 2017.09.13

관련글 더보기