首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >满足子视图模型依赖关系

满足子视图模型依赖关系
EN

Stack Overflow用户
提问于 2010-07-27 20:46:09
回答 3查看 480关注 0票数 4

我在建一个主细节表格。主视图模型构造细节视图模型的实例。这些细节视图模型有几个依赖项,需要满足新的类实例。(这是因为它们需要在与主vm独立的数据上下文中操作的服务层。)

实现这些依赖关系的最佳方法是什么?

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-26 12:46:00

一些可能性:

硬编码引用

下面的方法可以解决这个问题。然而,由于它引入了硬编码的依赖项,使用它是不可能的。

代码语言:javascript
运行
复制
// in the master view model
var detailViewModel = new DetailViewModel(new AccountService(), new TransactionService());

基于IoC框架的解析

另一个选项是父视图模型保存对IoC框架的引用。这种方法引入了IoC框架上的主视图模型依赖项。

代码语言:javascript
运行
复制
// in the master view model
var detailViewModel = new DetailViewModel(resolver.GetNew<IAccountService>(), resolver.GetNew<IAccountService>());

工厂Func<>s

代码语言:javascript
运行
复制
class MasterViewModel {
  public MasterViewModel(Func<Service.IAccountService> accountServiceFactory, Func<Service.ITransactionService> transactionServiceFactory) {
    this.accountServiceFactory = accountServiceFactory;
    this.transactionServiceFactory = transactionServiceFactory;

    // instances for MasterViewModel's internal use
    this.accountService = this.accountServiceFactory();
    this.transactionService = this.transactionServiceFactory():
  }
  public SelectedItem { 
    set {
       selectedItem = value;
       DetailToEdit = new DetailViewModel(selectedItem.Id, accountServiceFactory(), transactionServiceFactory());
    }
    // ....
票数 0
EN

Stack Overflow用户

发布于 2010-07-29 18:07:49

BookLibrary示例应用程序展示了如何使用M实现主/详细场景。它使用MEF作为IoC容器来满足ViewModel依赖关系。

票数 1
EN

Stack Overflow用户

发布于 2010-07-28 00:07:49

还可以使用容器构造详细视图:

代码语言:javascript
运行
复制
var detailViewModel = container.CreateInstance<DetailViewModel>();

容器将解析IAccountService和ITransactionService的依赖关系。但是,您仍将依赖IOC框架(除非使用CommonServiceLocator)。

下面是我如何使用CommonServiceLocator实现的:

代码语言:javascript
运行
复制
this.accountService = ServiceLocator.Current.GetInstance<IAccountService>();
this.transactionService = ServiceLocator.Current.GetInstancey<ITransactionService>();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3347818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档