当前位置:  开发笔记 > 运维 > 正文

Silverlight MVVM应用程序中服务定位器的用途是什么?

如何解决《SilverlightMVVM应用程序中服务定位器的用途是什么?》经验,为你挑选了1个好方法。

我正在尝试将所有部分放在一起用于我的MVVM Silverlight应用程序,我看到一些博客涉及服务定位器.

什么是服务定位器以及何时应该使用它?



1> Jonas Folles..:

我已经将ServiceLocator与MVVM结合使用,以启用从View到ViewModel的声明性绑定.

ServiceLocator是基于拉式的,而IoC容器是基于推送的.例如:

如果你使用IoC容器,你可能会创建这样的东西:

public MyViewModel(IDataRepository repository)
{
}

IoC容器将在构造它时将IDataRepository实例推送到对象中.

如果您使用ServiceLocator,通常会编写如下代码:

public MyViewModel()
{
    _repository = ServiceLocator.Instance.DataRepository;
}

因此,在这种情况下,ViewModel从ServiceLocator中提取IDataRepository接口的实例.

ServiceLocator可能由IoC容器支持(但不是必需的).

这样做的好处是您可以将ServiceLocator作为资源添加到App.xaml文件中,然后从视图中以声明方式访问它.

...

MyViewModel可能由IoC容器创建,但它使用数据绑定和ServiceLocator进入View.

我在我的博客上有关于Silverlihgt/MVVM上下文中的依赖注入,IoC和ServiceLocators的博客文章.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有