Folgender Sachverhalt:
Alle meine „Resource.resw” befinden sich in der Presentation.dll im Verzeichnis „/Resources/de-DE/ShellView.resw“ bzw. „/Resources/en-US/ ShellView.resw“. In der Application.dll befinden sich alle Methoden zur Sprachverwaltung wie z. b. Sprache wechseln.
Die „Presentation.dll“ hat einen Verweis auf „Application.dll“.
Nun möchte via in der Application.dll auf die Resourcen der „ShellView.resw“ zugreifen.
Mein Ansätze:
ResourceLoader loader = ResourceLoader("Assembly/ResourceFile");
ResourceLoader loader = ResourceLoader.GetForCurrentView(„Presentation/ShellView“
ResourceLoader loader loader = ResourceLoader("Presentation.Lib/Resources");
Jedes mal bekomme ich die Fehlermeldung, dass die ResourceMap nicht gefunden wird.
Kann es daran liegen, dass die Application.lib keinen Verweis auf Presentation.lib hat. Das soll natürlich auch nicht sein.
Nach meinem Verständnis gehört die Sprachverwaltung (in welcher Sprache soll präsentiert werden) in die Präsentationsschicht.
Wenn man sich merken möchte, was die bevorzugte Sprache ist, dann geht das auch runter in den DataLayer, allerdings braucht der nur diese eine Information und keinen Zugriff auf die Resourcen.
Danke für die Antwort.
Nur was macht man, wenn die Tools für die Sprachverwaltung in einem Framework uns somit in einer anderen DLL liegen.
Das die Resourcen selbst in der Presentation Schicht halte ich auch für richtig.
Diese Schichten sind eine logische Aufteilung und nicht an explizit einer DLL gebunden und Verweise zu anderen DLLs kann man doch problemlos erstellen.
Ein Problem sehe ich da jetzt nicht.
Du hast leider das Problem nicht ganz verstanden vermute ich, es hat hier weniger etwas mit Schichtentrennung zu tun, sondern damit, dass ich ein Framework verwende (bzw. erstelle) welches die Funktion zur Sprachsteuerung hat.
Dieses Framework wird bereits von der Presentation.DLL via Verweis verwendet. Ich kann schwerlich einen Verweis von Application (was das Framework darstellt) zusätzlich auf Presentation verweisen. Das wäre das ein recusiever Verweis.
Mit dem ResscourceLoader kenne ich mich jetzt nicht auf grundlegend sollte es aber funktionieren wie hier beschrieben.
MSDN:Quickstart: Using string resources (XAML)
Der zugriff auf die Ressorcen, wird da dann aber auch wohl nur in der App funktioniere, die die Presentation.dll verwendet. Unit Test sind damit schwer möglich.
Grundlegend sollte es aber auch möglich sein, die Resourcen in eine eigene DLL auszulagern. So das Prsentaion und Application auf sie verweisen.
Sollte man mal gelesen haben: