MVVMLight의 기본 템플릿 (ViewModelLocator.cs
)의 코드 세그먼트입니다. 단순화를 위해 일부 부품을 제거했습니다.MVVMLight에서 SimpleIoC를 사용하면 어떤 이점이 있습니까?
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
}
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
}
지금이 SimpleIoC
를 사용하지 않고 내 자신의 버전이며 첫 번째 버전 (적어도 내 자신의 관찰에서)로 같은을하고있다. 제 생각에는
public class ViewModelLocator
{
static ViewModelLocator() { }
public MainViewModel Main
{
get
{
if(ViewModelBase.IsInDesignModeStatic)
return new MainViewModel(new DesignDataService());
else
return new MainViewModel(new DataService());
}
}
}
는, 두 번째 버전은를 이해하기 쉽고 분명 짧은 입니다. 물론 첫 번째 예에서는 MainViewModel의 인스턴스가 하나만 만들어집니다 (이 패턴은 싱글 톤 패턴이라고합니다).하지만 SimpleIoC
클래스를 사용하지 않고도 구현할 수 있다고 생각합니다. 내 질문에 SimpleIoc
클래스를 사용하여 클래스/개체 "등록"의 이점은 무엇입니까? 나에게 설명해주십시오.
제 5 차 최저 가격. – Karolis
@ KarolisKajėnas 당신의 요점은 확실하지 않습니다. 두 예제 모두 종속성 삽입을 보여 주며 질문은 그와 같이 태그가 지정됩니다. –
@ KarolisKajėnas : 그것에 관해 읽을 것입니다. 그 원리에 대해 처음 들었습니다. – someone