inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#/.NET 7.0]어서와, WPF는 처음이지?

Dependency Injection

Dependency Injection 커리큘럼 수강 중 문의 드립니다.

해결된 질문

299

형주

작성한 질문수 1

1

아래의 생성자가 호출이 되던데, 어떤 원리에 의해서 아래의 생성자가 호출이 되는 걸까요?

dateTime을 매개변수로 하여 호출하는 곳이 없는 것 같은데...

원리가 궁금합니다..

 

public DashboardViewModel(IDateTime dateTime)

{

this._idateTime = dateTime;

}

.net wpf

답변 1

1

RAZOR

형주님 안녕하세요! 늦은 시간까지 열심히 수강 중이시네요!

저도 자려던 참에 질문 올라온 것 보고 헐레벌떡 컴퓨터 앞에 앉았습니다!

 

의존성 주입이 처음에 어렵고 이해하기 막연한 부분이 있습니다 ㅠ____ㅠ 천천히 설명해드리자면!
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 인터페이스를 "통해" 외부에서 제공받은 객체(서비스)를 사용할 수 있게 된다 😃

 

설명이 잘 되었을까요?! 뒷 부분까지 천천히 수강 하시다보면 점차 이해되실 것 같습니다! 질문은 언제든 환영이니 궁금한 점이 생기면 바로바로 질문 올려주세요! 열공 그만하시고 얼른 주무세요ㅠㅠ! 감사합니다~!

 

1

형주

친절하고 자세한 답변 너무 감사합니다 !

이해가 된 것 같습니다 ~ 끝까지 열심히 들어볼게요 !

0

RAZOR

아자아자 파이팅! 응원합니다~~!!

LoadingControl 관련 질문입니다.

0

42

2

WPF xaml 편집 시 투명 배경으로 보는 방법

0

71

1

자동 생성된 ViewModels.Pages에서 디버깅이 되지 않습니다.

0

47

1

WPF-UI프로젝트에서 dll 참조하는 방법

0

87

1

프로그래 시브만 계속 나오는데

0

57

1

동영상 화질이 720인데 좀더 높은 화질은 안되나요?

-1

44

0

6번 강의 Dependency Injection

0

46

1

자동생성 안됨

0

75

1

(절대로 AI 인턴 쓰지마세요 Chatgpt랑 똑같은 답변 나옵니다.)WPF 'Title' 부분을 어떻게 변경해야 할 지 잘 모르겠습니다.

0

97

1

WPF 'Title' 부분을 어떻게 변경해야 할 지 잘 모르겠습니다.

0

72

2

INavigationAware

0

54

1

postgresql 설치 문제

0

71

1

nuget 버전 관련

0

63

1

질문있습니다 선생님.

0

56

1

12. Data 입력 View Page Design(2)

0

67

2

restore 오류

0

77

2

DB

0

75

1

WPF-UI 설치가 안된다면, 해당 빌드로 설치해보세요.

2

185

1

XAML을 야물이라고 읽으시는데 공식은 재믈 아닌가요?

0

220

1

코드 구문 에러 떠서 문의드립니다.

0

150

2

11:56 Binding ViewModel할때

0

151

1

WPF-UI 질문입니더

0

154

1

제너레이터 질문 있습니다

0

100

1

EntityFrameworkCore에서 Build Fail

0

130

1