Ich versuche, eine Art Master/Detail UI mit einem MVP-Muster zu erstellen. Ich habe die üblichen Verdächtigen:Wie verknüpfe ich ein UserControl mit einem Formular in einem MVP-Muster?
interface IMainView{}
class MainView: Form, IMainView{}
interface IMainPresenter{}
class MainPresenter{}
// Numerous domain objects
Ich habe auch ein Usercontrol, die auch ein Blick auf seinen eigenen MVP Triade:
interface ISubView{}
class SubView: UserControl, ISubView{}
interface ISubPresenter{}
class SubPresenter{}
Die MainPresenter erzeugt und Instanz des SubPresenter, was wiederum schafft eine Instanz von SubView. Mein Problem ist, dass die Views keine Referenzen zueinander enthalten oder sich überhaupt kennen. Sie kennen nur ihre eigenen Präsentatoren, aber ich möchte eine Ansicht, die ein UserControl ist, an eine andere Ansicht anfügen, die ein Formular ist. Ist es möglich, die Unwissenheit einer jeden Ansicht voneinander zu unterscheiden?
Bis zu diesem Punkt haben alle Ansichten die Eigenschaften offengelegt, die von jedem Präsentator als Systemtypen benötigt werden, so dass die Präsentatoren nicht davon betroffen wären, wenn eine ListBox zu einer ComboBox oder einer RadioGroup geändert würde. Ich würde es gerne so halten, wenn möglich, aber ich bin bereit, dieses Muster zu brechen, wenn ich keine andere Wahl habe.
Meine Gründe dafür ist das MainView präsentiert den Benutzer mit einer Sammlung von Objekten. Jedes Objekt kann eine von mehreren (mehr als 50) verschiedenen Klassen sein. Alle implementieren eine gemeinsame Schnittstelle, aber die Benutzeroberfläche zum Bearbeiten jedes Objekts hängt von der zugrunde liegenden Klasse ab.
Durch die Art und Weise, dies eine Winforms Anwendung ist .NET 2.0 (es ist kompiliert als C# 3.0 obwohl) Targeting
Es ist verboten, dass Referenten Ansichten erstellen !!! Du hast die Principa-Regel von MVP gebrochen! – dzendras
Ich habe unzählige Beispiele und Variationen von Model/View/ untersucht. Die einzige konsistente Regel, die ich gefunden habe, besteht darin, ein gewisses Maß an Trennung zwischen der Ansicht und dem Modell/der Domäne beizubehalten. Wenn etwas über die Erstellungsreihenfolge, das Leben und die Eigentümerschaft der Schlüsselfiguren in der Triade gesagt wurde, wurde dies von denjenigen vermieden, die ihre Forschung veröffentlicht haben. –