칼 쉬페 (Karl Shiffet)가 'InTheBox' WPF Training을 작성했으며 WPF 학습을위한 훌륭한 자료가되었습니다. 그것이 가져온 한 가지는 의존성 주입과 연합 컨테이너 (Unity Container)의 사용이었습니다. 종속성이 UnityContainer에 등록하고 MainWindowViewModel UnityContainer에 의해 분사되는왜 의존성 주입 컨테이너를 사용합니까?
public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
IUnityContainer container = new UnityContainer();
container.RegisterType<IDialogService, ModalDialogService>(
new ContainerControlledLifetimeManager());
container.RegisterType<IEventRepository, EventRepository>(
new ContainerControlledLifetimeManager());
MainWindow window = container.Resolve<MainWindow>();
window.DataContext = container.Resolve<MainWindowViewModel>();
window.Show();
}
}
: 여기 날 일부 문제를 제기 코드 섹션이다. 내 질문은 왜 컨테이너를 사용하는 것입니까? 이유는 단지까지 의존성 주입에 관한 한 같은 일을 실현 다음 코드 조각을 사용하지 :
protected override void OnStartup(StartupEventArgs e)
{
IDialogService dialogService = new ModalDialogService();
IEventRepository eventRepository = new EventRepository();
MainWindow window = new MainWindow();
window.DataContext =
new MainWindowViewModel(eventRepository, dialogService);
window.Show();
}
나는이 경우 어떤 혜택을 볼 수 있도록 나는 아직도 합성 루트에서 생성자에 종속성을 주입하고 UnityContainer를 사용하는 방법.
분명히 이유가 있음을 감사하지만 누군가이 상황에서 추가 사항을 설명 할 수 있습니까? 또한, 이와 같은 용기의 사용이 참으로 까다로운 또 다른 상황이 있습니까?
새로운 의존성을 도입 할 때 컨테이너가 코드 변경을 허용 할 수있는 방법을 보여주는 추가 예제를 보내 주셔서 감사합니다. –