我一直在研究Lauren Bugnion关于MVVM轻型IOC容器的博客文章,我有一件事让我很困惑。
这是指博客文章的链接 MVVM light IOC containers blog
我不想引用整个事情,所以我只会包含我很难理解的片段。
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IRssService, Design.DesignRssService>();
}
else
{
SimpleIoc.Default.Register<IRssService, RssService>();
}
SimpleIoc.Default.Register<INavigationService, NavigationService>();
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
}
现在我理解了静态构造函数和所有内容,但我无法绕过
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
此功能是否可访问?如何?
谢谢! :)
答案 0 :(得分:0)
是的,只要您拥有ViewModelLocator实例,就可以访问它。例如,您可以在App.xaml中实例化一个实例,它可以通过StaticResource访问。