So implementieren Sie MVC ordnungsgemäß mit C # .NET in Windows Forms-Anwendungen

8

Ich habe überall im Web nach Implementierungen eines MVC-Setups in .NET gesucht. Ich habe viele Beispiele gefunden, aber sie scheinen sich in bestimmten Aspekten zu unterscheiden. Ich habe ein Buch über Design Patterns geschrieben, in dem beschrieben wird, dass MVC aus Smalltalk stammt, also las ich über mehrere Leute, die ihre Implementierung in dieser Sprache diskutierten. Was folgt, ist ein Beispielprojekt, das ich geschrieben habe, indem ich verwendet habe, was ich gesammelt habe, war eine korrekte Implementierung, aber ich bin durch einige Details verwirrt worden.

Ein Problem, auf das ich gestoßen bin, ist die richtige Reihenfolge der Konstruktion der Objekte. Hier ist der Impl in meinem Programm.cs

%Vor%

Die Ansicht: Sofort habe ich ein paar Probleme, von denen ich mir nicht sicher bin. Erstens, wenn die Ansicht nur Daten aus dem Modell zum Aktualisieren lesen soll, aber einen Verweis darauf enthält, was hindert mich daran, die Aufrufe des Controllers an das Modell aus der Ansicht zu machen? Sollte ein Programmierer einfach ignorieren, dass er den Funktionen der Modellmitglieder ausgesetzt ist? Ein anderer Gedanke, den ich hatte, war vielleicht das Ereignis, das die Ansicht darüber informiert, dass das Modell aktualisiert wird, würde eine Art Zustandsobjekt senden, mit dem sich die Ansicht aktualisieren kann.

%Vor%

Der Controller: Mein einziges echtes Problem mit der Art und Weise, wie ich den Controller implementiert habe, ist, dass es mir etwas merkwürdig erscheint, dass es möglich ist, den Controller zu konstruieren, ohne dass ihm definitiv eine Ansicht zugewiesen ist. Ich könnte die Ansicht vollständig ignorieren, aber das würde bedeuten, dass ich Parameter an die Funktionen des Controllers übergeben würde, um das Modell zu aktualisieren, das den Punkt völlig zu übersehen scheint.

%Vor%

Das Modell: In meiner Form habe ich eine Combobox, die eine Liste der Fahrzeuge in meiner Pseudodatenbank ist. Ich habe das Gefühl, dass meine Form aus diesem Grund mehrere Ansichten / Modelle implementieren sollte. Eine Ansicht zur Auflistung der möglichen Fahrzeuge mit einem entsprechenden Controller / Modell und eine Ansicht zur Anzeige von Informationen über das ausgewählte Fahrzeug mit einem eigenen Controller / Modell.

%Vor%

Als Fazit dieser tl; dr, ich denke, wonach ich suche, ist eine Anleitung, ob das, was ich hier mache, eine echte MVC-Implementierung darstellt und vielleicht für jemanden, der die oben genannten Bedenken beleuchtet . Jeder Rat würde sehr geschätzt werden.

    
geek_factorial 15.07.2011, 19:17
quelle

1 Antwort

4

Wir werden davon abhängen, was Sie tun wollen. Sie haben derzeit eine Implementierung des Supervising Controllers. Wenn Sie das Modell aus der Ansicht (und jeder Datenbindung) entfernen möchten, können Sie stattdessen ein passives Ansichtsmuster implementieren. Siehe diesen Artikel für mehr Unterschiede.

Passive View- und Supervising-Controller http://i.msdn.microsoft.com/dynimg/IC281772.png

Und Martin Fowler ist König ( GUI-Architekturen ).

    
SwDevMan81 15.07.2011 19:32
quelle