해결된 질문
작성
·
204
답변 1
1
형주님 안녕하세요! 늦은 시간까지 열심히 수강 중이시네요!
저도 자려던 참에 질문 올라온 것 보고 헐레벌떡 컴퓨터 앞에 앉았습니다!
의존성 주입이 처음에 어렵고 이해하기 막연한 부분이 있습니다 ㅠ____ㅠ 천천히 설명해드리자면!
DashboardViewModel 생성자는 Dependency Injection(DI)을 사용하고 있습니다! Dependency Injection은 객체가 직접 필요로 하는 의존성을 만들어내는 것이 아니라, 외부에서 주입받는 형식의 디자인 패턴이죠 ㅎㅎ
15:00 이후를 보시면 ConfigureServices에 아래 부분이 보이실까요?
★ services.AddSingleton<DashboardViewModel>();
서비스 컨테이너에 "DashboardViewModel"이 등록되어 있습니다.
따라서 애플리케이션이 시작될 때 서비스 컨테이너가 'DashboardViewModel' 인스턴스를 생성하면서 해당 매개변수에 필요한 의존성을 주입하게 됩니다. 이때, IDateTime
타입의 서비스를 찾아서 주입하게 되며, 그 서비스는 DateTimeService
인스턴스일 것입니다. 실제로 주입 후, 조사식을 통해 객체를 보면 DateTimeService
인스턴스가 할당되어 있습니다.
★ services.AddSingleton<IDateTime, DateTimeService>();
정리하자면, 서비스 컨테이너가 DashboardViewModel 인스턴스를 생성한다 -> 생성할 때 보니 IDateTime 인터페이스를 매개변수로 갖는다? -> 의존성을 주입해야 하기 때문에 등록된 서비스 중에서 IDateTime 인터페이스를 구현한 서비스를 찾는다 -> 등록된 걸 보니 DateTimeService 여서 그걸 주입하여 this._idateTime에 할당한다. -> DashBoardViewModel은 이제 IDateTime 인터페이스를 "통해" 외부에서 제공받은 객체(서비스)를 사용할 수 있게 된다 😃
설명이 잘 되었을까요?! 뒷 부분까지 천천히 수강 하시다보면 점차 이해되실 것 같습니다! 질문은 언제든 환영이니 궁금한 점이 생기면 바로바로 질문 올려주세요! 열공 그만하시고 얼른 주무세요ㅠㅠ! 감사합니다~!
친절하고 자세한 답변 너무 감사합니다 !
이해가 된 것 같습니다 ~ 끝까지 열심히 들어볼게요 !