- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 MVVM 模式开发 WPF 应用程序。我正在使用 MVVM Light 库,并且我也在尝试使用依赖注入(inject)器(我正在考虑 Ninject 和 Unity)。
我已经阅读了很多博客文章,我对让我的类(class)相互交流的“正确”方式感到很困惑。特别是,我不知道什么时候使用依赖注入(inject),什么时候依赖中介模式。
让我们考虑一个例子。我有一个 ViewModel,我们称之为 DataViewModel,以及提供某种数据的 Data 类。
他们之间如何更好地沟通:
A. 使用 IData 接口(interface)注入(inject)对 DataViewModel 的依赖?这样 Data 就不必依赖 Messenger,但如果 Data 发生变化,它必须提供一个事件,并且 ViewModel 必须订阅它。
B. 依赖中介者模式(在 MVVM Light as Messenger 中实现),在 Model 和 ViewModel 之间发送消息?这种方式根本不需要使用依赖注入(inject),因为整个通信将基于消息。
此外,我的 ViewModel 是否应该在其他 ViewModel 上注入(inject)依赖关系,还是仅仅依赖 Messenger 会更好?如果是第一个,是否有必要为每个 ViewModel 定义一个单独的接口(interface)?我认为为每个 VM 定义一个接口(interface)将是一项额外的工作,但也许值得。
最佳答案
通常,ViewModel 会转到 Service(正如 Prism 所说的那样)来检索它需要的数据。该服务通过 DI(构造函数注入(inject))推送到 ViewModel,尽管您可以通过 ServiceLocator 以另一种方式执行此操作。
因此,您的 ViewModel 将持有对服务的引用,该服务将抽象您的数据检索。数据可能来自 DB、XML 文件,谁知道呢……抽象就在那里。因此,对于您的 IData 情况,对该类型的引用将在 ViewModel 中的某个点发生,但不会通过 DI 的任何方式发生。如果您的 IoC 框架允许(Prism 允许),您可以创建接口(interface)类型到具体类型的映射,然后通过容器检索这些类型; Unity就是这种情况。
这是一个简短的示例...脚本绑定(bind)到 View ,并将 ViewModel 注入(inject)到 View 中。请注意使用 IScriptService 检索数据。返回的数据是 IScript 类型的集合,但是我们从未将该类型正式注入(inject)到 ViewModel 中,因为我们不关心作为单个实体的类型,而是在更大范围内关心类型。
public ScriptRepositoryViewModel(IUnityContainer container, IScriptService scriptService, IEventAggregator eventAggregator)
{
_container = container;
_scriptService = scriptService;
_eventAggregator = eventAggregator;
}
public ICollectionView Scripts
{
get
{
if (_view == null)
{
_view = CollectionViewSource.GetDefaultView(_scriptService.Scripts);
_view.Filter = Filter;
}
return _view;
}
}
关于wpf - MVVM : Communication between the Model and ViewModels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4207569/
我对 mongoosejs 中模型的使用感到有些困惑。 可以通过这些方式使用 mongoose 创建模型 使用 Mongoose var mongoose = require('mongoose');
我正在看 from django.db import models class Publisher(models.Model): name = models.CharField(max_len
我有自己的 html 帮助器扩展,我用这种方式 model.Reason_ID, Register.PurchaseReason) %> 这样声明的。 public static MvcHtmlS
假设模型原本是存储在CPU上的,然后我想把它移到GPU0上,那么我可以这样做: device = torch.device('cuda:0') model = model.to(device) # o
我过去读过一些关于模型的 MVC 建议,指出不应为域和 View 重用相同的模型对象;但我找不到任何人愿意讨论为什么这很糟糕。 我认为创建两个单独的模型 - 一个用于域,一个用于 View - 然后在
我正在使用pytorch构建一个像VGG16这样的简单模型,并且我已经重载了函数forward在我的模型中。 我发现每个人都倾向于使用 model(input)得到输出而不是 model.forwar
tf.keras API 中的 models 是否多余?对于某些情况,即使不使用 models,代码也能正常运行。 keras.models.sequential 和 keras.sequential
当我尝试使用 docker 镜像运行 docker 容器时遇到问题:tensorflow/serving。 我运行命令: docker run --name=tf_serving -it tensor
我有一个模型,我用管道注册了它: register_step = PythonScriptStep(name = "Register Model",
如果 View 需要访问模型中的数据,您是否认为 Controller 应: a)将模型传递给 View b)将模型的数据传递给 View c)都不;这不应该是 Controller 所关心的。让 V
我正在寻找一个可以在模型中定义的字段,该字段本质上是一个列表,因为它将用于存储多个字符串值。显然CharField不能使用。 最佳答案 您正在描述一种多对一的关系。这应该通过一个额外的 Model 进
我最近了解了 Django 中的模型继承。我使用很棒的包 django-model-utils 取得了巨大的成功。我继承自 TimeStampedModel 和 SoftDeletableModel。
我正在使用基于 resnet50 的双输出模型进行项目。一个输出用于回归任务,第二个输出用于分类任务。 我的主要问题是关于模型评估。在训练期间,我在验证集的两个输出上都取得了不错的结果: - 综合损失
我是keras的新手。现在,我将使用我使用 model.fit_generator 训练的模型来预测测试图像组。我可以使用 model.predict 吗?不确定如何使用model.predict_g
在 MVC 应用程序中,我加入了多个表并将其从 Controller 返回到 View,如下所示: | EmployeeID | ControlID | DoorAddress | DoorID |
我在使用 sails-cassandra 连接系统的 Sails 中有一个 Data 模型。数据。 Data.count({...}).exec() 返回 1,但 Data.find({...}).e
我正在使用 PrimeFaces dataTable 开发一个 jsf 页面来显示用户列表。用户存储在 Model.User 类的对象中。
我正在关注https://www.tensorflow.org/tutorials/keras/basic_classification解决 Kaggle 挑战。 但是,我不明白应该将什么样的数据输入
我是这个领域的新手。那么,你们能帮忙如何为 CNN 创建 .config 文件吗? 传递有关如何执行此操作的文档或教程将对我有很大帮助。谢谢大家。 最佳答案 这个问题对我来说没有多大意义,因为 .co
我是“物理系统建模”主题的新手。我阅读了一些基础文献,并在 Modelica 和 Simulink/Simscape 中做了一些教程。我想问你,如果我对以下内容理解正确: 符号操作是将微分代数方程组(
我是一名优秀的程序员,十分优秀!