2009-06-12 33 views
5

Używam pryzmatu jako przykładu; to moja pierwsza gra z WPF. Napisałem dwa moduły; orderModule and orderDetailModule. Mogłem uruchomić moją aplikację i zapełnić ją na jednym ekranie, teraz próbuję mieć tylko jedno ładowanie modułu i ładować drugie za pomocą kliknięcia przycisku. Wcześniej ładowałem moje moduły w kodzie, potem zauważyłem, że pryzmat używa xml, więc próbuję to również zrobić. Z jakiegoś powodu nie można ich znaleźć, pełne błąd pojawia się:Nie można pobrać typu modułu Błąd

Microsoft.Practices.Composite.Modularity.ModuleInitializeException był nieobsługiwany Message = "Nie można pobrać typu modułu NetworkOrderManagement.WPF_Modules.Order, OrderModule od załadowane złożenia. Może być konieczne określenie bardziej w pełni kwalifikowanej nazwy typu. "

To jest sekcja moduły w moim app.config:

<modules> 
<module assemblyFile="WPFOrderModule.dll" 
     moduleType="NetworkOrderManagement.WPF_Modules.Order, OrderModule" 
     moduleName="OrderModule"/> 
<module assemblyFile="WPFOrderDetailModule.dll" 
     moduleType="NetworkOrderManagement.WPF_Modules.OrderDetail, OrderDetailModule" 
     moduleName="OrderDetailModule" 
     startupLoaded="false"/> 

Od link text

W sekcji konfiguracji modułów, definiują moduł. Aby to zrobić, dodaj element XML modułu. Ten element ma następujące atrybuty:

assemblyFile. Ten atrybut określa lokalizację zespołu modułu. Ten atrybut jest wymagany.

moduleType. Ten atrybut określa typ w zespole modułu, który implementuje interfejs IModule. Ten atrybut jest wymagany.

moduleName. Ten atrybut określa nazwę modułu. Ten atrybut jest wymagany.

startupLoaded. Ten atrybut określa, czy moduł jest ładowany podczas uruchamiania. Jeśli jego wartość jest prawdziwa (jest to wartość domyślna), moduł powinien zostać załadowany przy uruchomieniu. Jeśli jego wartość jest nieprawidłowa, moduł nie powinien być ładowany podczas uruchamiania; zamiast tego powinien być ładowany na żądanie. Ten atrybut nie jest wymagany.

Mój moduł zamówienia, który implementuje moduł, znajduje się w przestrzeni nazw NetworkOrderManagement.WPF_Modules.Order.

Jakieś pomysły?

Odpowiedz

6

Prawdopodobnie używa się odbicia, aby załadować moduł na podstawie jego typu. Musisz użyć w pełni kwalifikowanej nazwy, aby refleks mógł działać. Zazwyczaj jest to format: "Full.Namespace.TypeName, AssemblyName". To byłoby najbardziej podstawowe nazewnictwo. Jeśli to nie rozwiąże problemu, musisz zacząć dodawać atrybuty dodatkowe, takie jak wersja, język itp.

+0

Działa teraz, miałem "Przestrzeń nazw, nazwaPunktu" bez żadnego zestawu. –

Powiązane problemy