Die Verwendung des MVP-Musters in Winforms setzt voraus, dass der Präsentator weiß, auf welche Steuerelemente zugegriffen werden soll, wie vom IViewInterface definiert. Wenn Sie beispielsweise zwei Textfelder und eine Schaltfläche in Ihrem Formular hätten, würden Sie ein IViewInterface mit zwei Eigenschaften für ein Textfeld definieren und bei einem Klickereignis den Anruf an Presenter weiterleiten, und der Präsentator kann auf diese beiden Eigenschaften zugreifen. Ziemlich einfach. Stellen Sie sich nun vor, wenn Ihre Benutzeroberfläche zur Laufzeit auf der Grundlage von Tabellen in Ihrer Datenbank erstellt wird. Nehmen wir an, Sie haben 500 Tabellen in Ihrer Datenbank und möchten CRUD-Apps für diese 500 Tabellen erstellen. Nehmen wir an, irgendwo in Ihrer Datenbank definieren Sie, wie Sie diese 500 Tabellen in Ihrer Benutzeroberfläche gestalten möchten. Sie haben ein Programm, das zur Laufzeit UI-Steuerelemente für diese 500 Tabellen erstellt. Wie wenden Sie MVP-Muster in solchen Fällen an?MVP-Muster mit dynamisch erstellter UI
Antwort
Volldynamische Benutzeroberflächen wurden von vielen Programmierern ohne viel Erfolg ausprobiert. Ich bin sicher, dass viele Leute Ihnen die Grundvoraussetzung geben könnten, d. H. Tabellen -> make UI, aber darüber hinaus hat nichts wirklich geklappt, so dass Sie besser dran sind, nur Ihr eigenes Ding zu machen.
Wenn Sie denken, dass Sie einen anderen Ansatz haben, sollten Sie es einfach ausprobieren und sehen, wie es funktioniert.
Der Moderator sollte sich überhaupt nicht um die Steuerung kümmern.
Die Ansicht könnte diese Daten als Eigenschaften anzeigen. Wenn diese 500 Tabellen mit ihren 500 UI-Layouts mindestens ein Standardanzeigesteuerelement wie GridView verwenden, können Sie eine Eigenschaft von "CurrentTableName" und eines von "CurrentRow" für die aktive Zeile in der GridView verfügbar machen. Der Präsentator könnte diese übernehmen und in DTO- oder DM-Objekte zu einer Geschäfts- oder Serviceschicht weiterleiten oder transformieren.
Dies kann oder kann in diesem Fall nicht möglich sein.
Ich hatte eine ähnliche Vorstellung. Ich dachte, dass mein IView würde nur eine Methode wie diese haben Liste
die MVP-Muster in WinForms verwendet wird auf dem Präsentator sagt zu wissen, um welche als durch die IViewInterface definierte den Zugriff steuert
Das stimmt, aber im Fall von dynamischer GUI nicht wahr müssen diese Steuerelemente einzeln als Eigenschaften der Schnittstelle verfügbar machen. Sie könnten ein generisches Steuerelement als eine Klasse mit einigen allgemeinen Eigenschaften definieren und eine Liste dieser Steuerelemente als eine einzelne Eigenschaft Ihrer Ansichtsschnittstelle verfügbar machen.
Dies ist nur eine Möglichkeit - das Design hängt vom genauen Szenario ab. Aber im Allgemeinen würde ich sagen, dynamische GUIs sind sogar besser Kandidaten für die Einführung von MVP, nicht das Gegenteil.
für was auch immer es bedeutet, ich bekomme eine -1, sobald ich eine Frage posten. Keep it coming – codemnky
Ich gebe nicht einen Ratten Esel Ruf, Punkte verdient, mvp, was auch immer solange ich weiter lernen und rechen in den Teig – codemnky
das Internet ist großartig. Sie müssen nicht stapfen und haben 40 Jahre Erfahrung, um lebenswichtiges Wissen zu erlangen. Es gibt eine Möglichkeit, dies in kurzer Zeit zu erreichen. – codemnky