我有一个 Windows 窗体应用程序,该应用程序当前在启动时加载数据库。流程是这样的:
Program.cs => Application.Run(new MainForm()); => MainForm 构造函数 => 打开数据库
所以基本上 MainForm 包含使应用程序运行的所有点点滴滴,而 Program.cs 只是一个存根。目前,加载的数据库名称是硬编码的,我想添加功能以通过命令行指定要加载的数据库名称。同时,我想添加以后做一些单元测试甚至依赖注入的能力,所以我想知道推荐哪种方法?
- 更改 MainForm 的构造函数以接受一些参数。
Application.Run(new MainForm());
然后更改Program.cs以读取命令行并将调用更改为 - 保持 Program.cs 和构造函数的签名不变,并检查 MainForm 构造函数中的命令行
方法一似乎更干净,因为它允许测试运行程序使用测试数据库创建 MainForm,但由于我通常不是 WinForms 开发人员,我不知道在没有默认构造函数的情况下是否会产生副作用主要形式还是有更好的方法?