Код инициализации в приложении WinForms - Program.cs или MainForm?

У меня есть приложение Windows Forms, которое в настоящее время загружает базу данных при запуске. Поток такой:

Program.cs = & gt; Application.Run (новый MainForm ()); = & GT; Конструктор MainForm = & gt; Открытая база данных

Таким образом, в основном MainForm содержит все фрагменты, которые заставляют приложение работать, а Program.cs - просто заглушка. В настоящее время имя загружаемой базы данных жестко закодировано, и я хочу добавить функциональность, чтобы указать имя базы данных для загрузки через командную строку. В то же время я хочу добавить возможность проводить некоторые юнит-тесты или даже инъекции зависимостей, поэтому мне интересно, какой подход рекомендуется?

Change the constructor of MainForm to accept some parameters. Then change Program.cs to read the command line and change the call to Application.Run(new MainForm()); accordingly Leave Program.cs and the Signature of the constructor untouched and check the command line in the constructor of MainForm

Первый способ кажется более чистым, поскольку он позволил бы, например, организатору тестов создавать MainForm с тестовой базой данных, но, поскольку я обычно не являюсь разработчиком WinForms, я не знаю, могут ли быть побочные эффекты отсутствия конструктора по умолчанию на Основная форма или есть ли лучший подход?

Ответы на вопрос(3)

Ваш ответ на вопрос