zoukankan      html  css  js  c++  java
  • 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();
        }
    IIOService

    在工程中实现该接口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;
            }
        }
    IOService

    这样就可以在测试的时候给VM注入一个实现该接口的桩对象,进而进行测试啦。

  • 相关阅读:
    Rabbitmq的使用四_Java Client方式使用Topic模式
    CentOS7安装Redis
    nmon文件结果分析
    nmon安装
    jmeter+ant+jenkins
    jenkins插件下载加速
    jmeter:多机联合负载
    jmeter Linux负载机出错Server failed to start:
    jenkins安装
    fiddler:筛选请求响应
  • 原文地址:https://www.cnblogs.com/zhuyc110/p/5251317.html
Copyright © 2011-2022 走看看