MVP Framework-übergreifend


#1
Ich versuche gerade in einem Projekt das MVP-Pattern zu verwenden.
Allerdings hab ich da so meine Probleme da ich versuche ein View-Objekt in Windows Forms und eins in WPF zu schreiben.
Drum weiss ich nicht wie ich im Presenter die Interfaces der Views angehen kann/muss.

Folgendes geht schon mal nicht:

Code:
public interface IShape
{
    Brush Background { get; set; }
    bool Visible { get; set; }
}
Das wäre ja für Windows Forms "System.Drawing.Brush"
und für WPF "System.Windows.Media.Brush".

Im Moment versuche ich das über Interfacevererbung (Basisinterface und jeweils eins für WF und WPF das davon erbt) und Fallunterscheidungen zu lösen, aber wirklich überzeugt bin ich von meinem Lösungsansatz nicht gerade.

Hat von euch vielleicht jemand eine Idee, Beispielcode o.ä. wie man so was angehen sollte?
 
S

SomeoneFromBehind

#2
Hallo,

prinzipiell sind die Interfaces ja für die Kapselung zuständig, so richtig würdest du mit diesen beiden Interfaces meiner Meinung nach nicht kapseln. Denn dem Interface muss es egal sein wie und womit es implementiert wird.
Und hier sitzt meine Meinung nach auch der springende Punkt, du müsstest 2 verschiedene Implementierungen nutzen oder aber 1 Implementierung die dies selbst entscheiden kann.

Als Tip vielleicht noch. Du kannst die Namespaces auch temporär nutzen - Namespaces müssen nicht zwangsläufig ganz oben stehen ;).

Grüße
 
#3
Danke für die Antwort.
Im Moment konzentrier ich mich auf die ASP.NET-Lösung die auch besser klappt als gedacht.
Evtl. brauch ich dann den Silverlight-Ansatz gar nicht mehr und das Problem hätte sich erledigt.
Andernfalls würde ich wohl keine bessere Lösung finden als alle Datentypen die Silverlight und Windows-Forms kennt in das Basis-Interface und davon abgeleitet dann die speziellen Properties wie Brush...
Zum Teil könnte ich es generisch lösen aber das hat auch seine Grenzen.

Mein Grundgedanke eine Class-Library zu schreiben die ich für WPF und Silverlight nutzen kann ging eh nicht auf.
Aber es wäre ja auch langweilig wenn alles so leicht klappen würde wie man denkt. ;)