c# WPF在ViewModel上声明接口

本文关键字:声明 接口 ViewModel WPF | 更新日期: 2023-09-27 18:10:58

我试图理解在特定ViewModel上声明接口的意义。我能想到的唯一优点是,我们可以指定用于设计时目的的ViewModel的公共变量。这样我们就可以确定(runtime &设计时视图模型)将具有相同名称的相同变量。

这样做还有其他好处吗?

c# WPF在ViewModel上声明接口

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

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

常见的接口,如IDisposable等,也经常出现。

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

正如Vlad已经提到的:使用接口将使模拟它更容易(但只有当所有属性都在接口中!)。