Initialisierungscode in einer WinForms-App - Program.cs oder MainForm?

Ich habe eine Windows Forms-Anwendung, die derzeit beim Start eine Datenbank lädt. Der Ablauf ist wie folgt:

Program.cs => Application.Run (neues MainForm ()); => MainForm Constructor => Datenbank öffnen

Im Grunde genommen enthält MainForm alle Elemente, die die Anwendung zum Laufen bringen, während Program.cs nur ein Stub ist. Derzeit ist der Name der geladenen Datenbank fest codiert, und ich möchte Funktionen hinzufügen, um den Namen der Datenbank anzugeben, die über die Befehlszeile geladen werden soll. Gleichzeitig möchte ich die Möglichkeit hinzufügen, später einige Unit-Tests oder sogar Abhängigkeitsinjektionen durchzuführen. Ich frage mich also, welcher Ansatz empfohlen wird.

Ändern Sie den Konstruktor von MainForm, um einige Parameter zu akzeptieren. Ändern Sie dann Program.cs, um die Befehlszeile zu lesen, und ändern Sie den Aufruf inApplication.Run(new MainForm()); entsprechendLassen Sie Program.cs und die Signatur des Konstruktors unverändert und überprüfen Sie die Befehlszeile im Konstruktor von MainForm

Methode 1 scheint sauberer zu sein, da sie es einem Testläufer ermöglichen würde, MainForm mit einer Testdatenbank zu erstellen, aber da ich normalerweise kein WinForms-Entwickler bin, weiß ich nicht, ob es Nebenwirkungen haben könnte, wenn kein Standardkonstruktor auf der vorhanden ist Hauptformular oder ob es einen besseren Ansatz gibt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage