У меня есть приложение Windows Forms, которое в данный момент загружает базу данных при запуске. Поток такой:
Program.cs => Application.Run (new MainForm ()); => Конструктор MainForm => Открыть базу данных
Таким образом, в основном MainForm содержит все фрагменты, которые запускают приложение, в то время как Program.cs - просто заглушка. В настоящее время имя загружаемой базы данных жестко закодировано, и я хочу добавить функциональность, чтобы указать имя базы данных для загрузки через командную строку. В то же время я хочу добавить возможность проводить некоторое модульное тестирование или даже инъекцию зависимостей, поэтому мне интересно, какой подход рекомендуется?
- Измените конструктор MainForm для принятия некоторых параметров. Затем измените Program.cs для чтения командной строки и измените вызов на
Application.Run(new MainForm());
соответственно
- Оставьте Program.cs и подпись конструктора без изменений и проверьте командную строку в конструкторе MainForm
Первый способ кажется более чистым, поскольку он позволяет, например, организатору тестов создавать MainForm с тестовой базой данных, но, поскольку я обычно не являюсь разработчиком WinForms, я не знаю, могут ли быть побочные эффекты отсутствия использования по умолчанию конструктор в главной форме или есть ли лучший подход?