2015-09-03 53 views
0

我想了解在特定的ViewModel上声明接口是什么。我能想到的唯一优势是我们可以指定可用于我们的ViewModel的通用变量,该变量用于设计时间目的。这样我们可以肯定,两个(运行时间设计时间视图模型)将具有相同的名称相同的变量。C#WPF在ViewModel上声明接口

这是否还有其他优点?

+1

测试!可能是这种抽象的最重要的原因,以及相关的 - 依赖注入(不回答,因为Vlad几乎涵盖了所有这些) – almulo

回答

4

使用接口的优点之一是使用DI。这样你可以在IoC容器中指定具体的VM应该注入哪个特定的接口。在VM中使用接口的另一个优点是当你需要模拟你的虚拟机而不是调用具体的虚拟机时,你可以用模拟库来模拟虚拟机(例如moq),而不是调用虚拟机的单元测试

1

我需要接口的一件事是,不同视图模型的列表,它们具有一些常见属性,如“标题”,当它们显示为选项卡控件时,可用作标题内容。虽然这基本上可以在没有界面的情况下完成(通过使用对象列表),但它使我更加确信运行时错误会更少。

IDisposable等常见接口也是一个更频繁出现的东西。

另一件事是视图需要与视图模型交互(例如,当用户点击“关闭”按钮时通知)。在这种情况下,接口可以提供可以被视图调用的方法。由于Vlad已经提到:使用接口可以更容易地模拟它(但只有当所有属性都在接口中!)。