MVVM模式下的OpenFileDialog
Posted 浣霜之剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVVM模式下的OpenFileDialog相关的知识,希望对你有一定的参考价值。
对于MVVM模式下的ViewModel层来说,是不应该直接访问OpenFileDialog或者FolderBrowserDialog的,否则VM会变得难以测试。
参考StackOverFlow,对ViewModel进行改造,使OpenFileDialog动作也可以测试。
首先实现接口Iioservice
public interface IIOService { string OpenFileDialog(string srcFilter = ""); IList<string> OpenFileDialogMultiselect(string srcFilter = ""); string FolderBrowserDialog(); }
在工程中实现该接口IOService
public class IOService : IIOService { public string OpenFileDialog(string srcFilter = "") { var op = new System.Windows.Forms.OpenFileDialog(); op.Filter = srcFilter; if (op.ShowDialog() == System.Windows.Forms.DialogResult.OK) return op.FileName; return ""; } public IList<string> OpenFileDialogMultiselect(string srcFilter = "") { var op = new System.Windows.Forms.OpenFileDialog(); op.Filter = srcFilter; op.Multiselect = true; if (op.ShowDialog() == System.Windows.Forms.DialogResult.OK) return op.FileNames; return new List<string>(); } public string FolderBrowserDialog() { var path = new System.Windows.Forms.FolderBrowserDialog(); var result = path.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) return path.SelectedPath; return string.Empty; } }
这样就可以在测试的时候给VM注入一个实现该接口的桩对象,进而进行测试啦。
以上是关于MVVM模式下的OpenFileDialog的主要内容,如果未能解决你的问题,请参考以下文章
Android入门第65天-mvvm模式下的retrofit2+okhttp3+rxjava