이전에 내 UniversalView에서 실행중인 프로젝트에 따라 MainViewModel에서 인터페이스를 구현하는 방법에 관해이 질문을했습니다.MVVM Dependency Injection 크로스 플랫폼
Choose interface implementation in universal app depending on platform
내가 가진이 나를 이렇게 내 VM's을 등록 할 수 있습니다 MVVM 빛 구현 후 :
가SimpleIoc.Default.Register<MainViewModel>();
그것은 또한 ctor에의 인터페이스 등으로 VM을 등록 할 oppurtunity을 제공을 이 :
는SimpleIoc.Default.Register<IDataService, DataService>();
셋업은 다음과 같다 :
나는 2 개의 프로젝트, Windows와 WindowsPhone이있다. PCL에있는 내 VM에 ctor에서 ICameraCaller를 사용하는 MainViewModel이 있습니다. 프로젝트에는 모두 ICameraCaller를 구현하는 클래스가 있으며 어떤 프로젝트를 실행하는지에 따라 CameraCaller의 "올바른"구현을 CTOR에 전달하고 싶습니다.
저는 DI가 갈 길이라고 들었습니다. 이것은 나를위한 상당히 새로운 주제이고 나는 오랫동안 붙어 있었어.
나에게 그것은 꽤 comman 작업이어야하는 것처럼 들린다? 실행중인 프로젝트에 따라 인터페이스 구현을 VM에 전달합니다. 여기
은 MainViewModel의 ctor에 있습니다 :private ICameraCaller _cameraCaller;
public MainViewModel(ICameraCaller cameraCaller)
{
_cameraCaller = cameraCaller;
}
이해가 안 어떻게 그 가능 제가 사용되는 그 무엇을 구현 모르는 고려 ViewModelLocator 내 뷰 모델에 인터페이스를 등록하는 방법에 대한 . 내가 알았더라도. 다른 프로젝트의 구현에 액세스 할 수 없습니다. 나는이 문제를 완전히 잘못 알고 있어야합니다.
와우! 좋은 답변을 해주셔서 감사합니다! Im 시도해보십시오! . – user2915962
@ user2915962 어떤 것이 명확하지 않거나 작동하지 않는지 묻고 싶습니다. – fex
@ user2915962 코드를 시도하고 문서를 보지 않고이 질문에 대답했습니다.) – fex