개발 & 프로그래밍
[C#] 의존성 주입(Dependency Injection, DI)
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
반응형