gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:51:47 24 4
gpt4 key购买 nike

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

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

最佳答案

我将 ServiceLocator 与 MVVM 结合使用,以启用从 View 到 ViewModel 的声明式绑定(bind)。

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

如果您使用 IoC 容器,您可能会创建如下内容:

public MyViewModel(IDataRepository repository)
{
}

IoC 容器在构造对象时会将 IDataRepository 实例插入对象中。

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

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

因此,在本例中,ViewModel 正在从 ServiceLocator 中提取 IDataRepository 接口(interface)的实例。

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

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

<UserControl 
DataContext="{Binding Path=MyViewModel,
Source={StaticResource serviceLocator}}">...</UserControl>

MyViewModel 可能由 IoC 容器创建,但使用数据绑定(bind)和 ServiceLocator 将其拉入 View 。

我有一个blog post about Dependency Injection, IoC and ServiceLocators in a Silverlihgt/MVVM context在我的博客上。

关于silverlight - Silverlight MVVM 应用程序中服务定位器的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com