ano*_*non 5 wpf prism unity-container mvvm viewmodel
我有两种方法来初始化WPF CAL MVVM中的Views和ViewModel.
1 - 似乎更受欢迎.需要您解析ViewModel以自动解析View.ViewModel包含有关View的信息.
public interface IView
{
void SetModel(IViewModel model);
}
public interface IViewModel
{
IView View { get; }
}
public class View
{
public void SetModel(IViewModel model)
{
this.DataContext = model;
}
}
public class ViewModel
{
private IView view;
public ViewModel(IView view)
{
this.view = view;
}
public IView View { return this.view; }
}
Run Code Online (Sandbox Code Playgroud)
2 - 看起来更清洁,并从ViewModel中删除View.需要您解析视图以自动解析ViewModel.将对象注入视图(不确定这是否合适).
public interface IView
{
}
public interface IViewModel
{
}
public class View
{
private IViewModel model;
public View(IUnityContainer unityContainer)
{
this.model = unityContainer.Resolve<IViewModel>();
this.DataContext = this.model;
}
}
public class ViewModel
{
}
Run Code Online (Sandbox Code Playgroud)
初始化视图和模型的可接受方法是什么,以及每种方法的优缺点是什么.你应该在视图中注入物体吗?
它们都是有效的,但#1 往往更容易测试(它至少使您的测试更简洁)。#2 的优点是它往往更明确,并使维护更清晰,特别是当你有大量人员流动时,诸如此类的事情。不需要太多解释(尽管这不是采用它的理由,但这只是一个不言而喻的道理)。
区别在于#1 称为依赖注入,#2 称为服务位置。它们经常被混淆,因为它们通常都使用某种 IoC 容器(尽管情况不一定如此)。
这最终是一个偏好问题,但正如我所说,我认为您会发现 #1 更容易测试......您不必在测试/模拟中涉及 IUnityContainer 接口。
| 归档时间: |
|
| 查看次数: |
7950 次 |
| 最近记录: |