Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: So 22.04.12 13:07 
Hallo Zusammen,

meine Programme wurden mit der Zeit etwas unübersichtlich, m.E. aufgrund fehlender Struktur. Daher habe ich mich u.a. intensiver mit Prism beschäftigt.
Ergebnis: Code ist wesentlich einfacher nachzuvollziehen; durch Modulisierung sind Komponenten wesentlich leichter austauschbar, ...

Eine Sache ist mir allerdings noch nicht ganz klar geworden:
In sämtlichen Beispielen werden Module mit den jeweiligen Interfaces in der dazugehörigen Assembly registriert:
Also z.B. Assembly "ViewModel" stellt z.B. das "ViewModelModule" zur Verfügung. Hier wird dann z.B. IViewModel als Singleton oder als Nicht-Singleton registriert. Event. werden die registrierten Elemente noch mit einem Namen ergänzt (z.B. ein MockViewModel und ein StandardViewModel).

Folg. 2 Fragen stelle ich mir in diesem Zusammenhang:

1.
Die Assembly "ViewModel" und speziell "ViewModelModule" kann doch gar nicht wissen, ob der Client ein Singleton oder ein Nicht-Singleton verlangt. Als Client sehe ich hier die anderen Module, die IViewModel verwenden. Außerdem kann der Client event. ergänzte Namen ohne externe Dokumentation nicht kennen. Klar, wenn ich gerade eben an einem Projekt mit zwei Assemblys arbeite, habe ich den Überblick und kanns im Quellcode sehen. Greift man aber später nur auf die erzeugte DLL zu, hilft nur eine externe Dokumentation bzw. ich schreibe sämtliche Infos in die XML-Tags zur Module-Klasse.

Ich vermute, dass ich hier etwas übersehe bzw. event. noch falsch mache. Kann mir hier jemand sagen, wie das ganze von Prism gedacht ist?

2.
Außerdem ist mir noch nicht klar, wie ich eine benamte Registrierung per Konstruktor-Injection auflöse. Wie kann ich steuern, dass eine View z.B. "MockViewModel" nutzt? Normal löse ich diese ja mit ...Resolve<IViewModel>("MockViewModel") auf, aber die Instanzierung läuft ja hier im Hintergrund.

Mit der Instanzierung des ServiceLocators in das ViewModel würde es ggfs. funktionieren, aber eigentlich wollte ich in das ViewModel keine Prism-Bestandteile integrieren (zwecks Wiederverwendbarkeit auch ohne Prism).

Gruß
Frank