Laden...

MVP - Verständnisproblem

Erstellt von fuchs005 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.823 Views
F
fuchs005 Themenstarter:in
26 Beiträge seit 2009
vor 13 Jahren
MVP - Verständnisproblem

Hallo zusammen,

ich arbeite mich gerade in MVP ein und habe da ein paar Fragen, die aus den verschiedenen Tutorials leider nicht hervorgehen. Auch hier im Forum habe ich keine passende Antwort gefunden.

Die View möchte ich gerne weitestgehend als Passive View implementiern. Die View soll also keine Kenntnis über das Model haben.

In der View möchte ich über eine BindingList<T> eine Objektliste aus dem Presenter darstellen. Der Presenter wiederum lädt die Daten dafür aus dem Model.

Sind diese Ansätze so korrekt? Ich stoß dabei auf ein Problem: Die View kennt ja das Model nicht. Somit kennt die View auch nicht den T der BindingList<T>, die vom Presenter geliefert wird.

Um das darzustellen, hier die Codausschnitte (gekürzt):

View:


private BindingSource _myObjectBindingSource;

private void FormMain_Load(object sender, EventArgs e)
{
    _presenter.LoadSettings();
            
    _myObjectBindingSource = new BindingSource();
    _myObjectBindingSource.DataSource = _presenter.MyObjectList;
}

Presenter:


private BindingList<MyObject> _myObjectList;

public BindingList<MyObject> MyObjectList { get { return _myObjectList; } }

public void LoadSettings()
{
    _myObjectList = new BindingList<MyObject>();
    _myObjectList = MyObject.LoadMyObjects();
}

Model:


public class MyObject
{
	public string strProp { get; set; }
	public int intProp { get; set; }
	public bool boolProp { get; set; }

	public static BindingList<MyObject> LoadMyObjects()
	{
		BindingList<MyObject> myObjectList = new BindingList<MyObject>;
		
		// lade hier die serialisierten Objekte aus Datei
		
		return myObjectList;
	}
	
}

Model, View und Presenter sind jeweils in eigene Assemblys definiert. Der Presenter kennt das Model und spricht die View über ein Interface an, die View kennt den Presenter.

Vielleicht sehe ich auch vor lauter Bäumen den Wald nicht mehr. Hoffe, ich konnte das Problem verständlich rüberbringen. Wie löst man so etwas?

Danke schon mal und schönen Gruß!

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

ich hab ein Bild angehängt das zeigt wie die Aufteilung und Zusammenhänge sind (Quelle: http://aviadezra.blogspot.com/2009/08/mvp-mvvm-winforms-data-binding.html).

Gezeigt wird allerdings MVP-VM.

Die View soll also keine Kenntnis über das Model haben.

Über irgenwas muss sie jedoch bescheid wissen. Im Bild wäre das ViewModel. Das ist jedoch was anderes als das Model (siehe Bild).

mfG Gü

Edit: Quelle hinzugefügt - Dank an FZelle für den Hinweis.

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

1.433 Beiträge seit 2006
vor 13 Jahren

Ist zwar in ASP.NET, aber vielleicht ein kleiner Input wie das MVP-Pattern umgesetzt werden kann, denke aber das kann man auch in Windows Forms einbringen.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

F
fuchs005 Themenstarter:in
26 Beiträge seit 2009
vor 13 Jahren

Danke für die Antworten, besonders die letzten 2 Links sehen sehr interessant aus. Werde mich da mal durcharbeiten.

Gruß
fuchs