2014-06-24 2 views
0

Currenlty MvvmLight에서 SimpleIoC를 사용하고 있으며 IMyService를 구현하는 클래스에 생성자 매개 변수를 제공하는 방법을 알 수 없습니다. 나는 다음과 같은 SO 스레드 MVVM SimpleIoc, how to use an interface when the interface implementation requires construction parameters을 발견했으며, 구현에 인터페이스를 등록 할 때 생성자 인수를 전달해야한다고 제안한다.SimpleIoc을 사용하여 생성자에 런타임 인수 전달

SimpleIoc.Default.Register<IMyService>(() => { 
    return new MyServiceImplementation("Hello World"); 
}); 

그러나이 등록은 실제 생성자 매개 변수에 대한 지식이있는 ViewModelLocator 클래스에 있습니다. "Hello world"가 아니라 "Hi there"가 될 수 있지만 컴파일 타임에는 알 수 없습니다. 런타임에 생성자 인수를 전달할 방법이 있습니까?

현재 (1) viewmodel에 IMyService를 등록하거나 (2) 생성자 매개 변수를 모두 제거하고 설정할 속성을 제공해야합니다. 어느 옵션도 옳은 것처럼 보이지 않으므로 생성자 인수를 MyServiceImplementation에 전달하는 방법에 대한 제안을 매우 감사하게 생각합니다.

답변

1

그래서 질문에서 SimpleIoc - can it provide new instance each time required? 나는 MvvmLight에서 SimpleIoc가 singleton viewmodels의 저장소처럼 행동한다는 것을 모았습니다. 따라서 ViewModelLocator를 제외하고 IMyService를 구현하는 인스턴스에 생성자 매개 변수를 제공하는 것은 의미가 없습니다.

지금은 생성자 매개 변수 (원래 질문의 옵션 2)를 제거했지만 나중에 Ninject와 같은 다른 라이브러리로 전환 할 수 있습니다.

+0

그래, SimpleIoC는 너무 단순한 IoC 일 뿐이라고 생각한다. –