我正在创建一个简单的WPF应用程序。我有一个函数OpenFile:

private void OpenFile(string fileName)
{
   if(!File.Exists(Helper.GetPath(fileName)))
   {
      MessageBox.Show("Error opening file");
   }
   else
   {
      //Code to handle file opening
   }
}

理想情况下,此功能应存在于何处?我觉得应该在.xaml.cs中,因为它访问了View部分中的MessageBox。但这也称为模型中的“我的助手”。所以我也认为可以在ViewModel中。在ViewViewModel中使用它有什么好处?有人可以帮我一些指点吗?

谢谢。

最佳答案

将其放置在 View 模型中的优点之一是可测试性。您可以编写一个单元测试,以检查仅在例如文件存在的情况下才显示消息框(更准确地说,如果您单击文件系统,它将是一个集成测试)。

但是,由于直接使用消息框,因此测试将永远不会在构建服务器上完成,因为在显示消息框的同时,计算机将等待用户的输入。

因此,我将反对您的 View 模型中的抽象,以便您可以在测试期间使用mock the message box

关于c# - 我应该将此函数放在View(代码隐藏)中还是放在ViewModel中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9553477/

10-13 06:56