C#WPF在ViewModel上声明接口

时间:2015-09-03 14:20:52

标签: c# wpf mvvm

我试图理解在特定的ViewModel上声明接口的重点是什么。我能想到的唯一优势是我们可以指定我们可以用于ViewModel的公共变量,这些变量用于设计时间目的。这样我们可以肯定,两者(运行时和设计时间视图模型)将具有相同名称的相同变量。

这还有其他优势吗?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

IDisposable等常见界面也是更频繁出现的界面。

另一件事是视图需要与视图模型交互(例如,当用户单击“关闭”按钮时通知)。在这种情况下,接口可以提供视图可以调用的方法。

正如弗拉德已经提到的:使用界面可以更容易地模拟它(但只有当所有属性都在界面中时!)。