2009-06-12 83 views
5

我以棱鏡爲例;這是我第一次玩WPF。我寫了兩個模塊; orderModule和orderDetailModule。我能夠運行我的應用程序,並讓他們在一個屏幕上填充,現在我試圖只加載一個模塊,並通過單擊按鈕加載另一個模塊。我之前在代碼中加載過我的模塊,然後我發現棱鏡使用的是xml,所以我正在嘗試這樣做。出於某種原因,它無法找到他們,完整的錯誤我得到的是:無法檢索模塊類型錯誤

Microsoft.Practices.Composite.Modularity.ModuleInitializeException了未處理 消息=「無法從檢索模塊類型NetworkOrderManagement.WPF_Modules.Order,OrderModule加載的程序集。您可能需要指定更完全限定的類型名稱。「

這是我的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"/> 

link text

內的模塊配置部分,定義模塊。爲此,請添加一個模塊XML元素。該元素具有以下屬性:

assemblyFile。該屬性指定模塊組件的位置。該屬性是必需的。

moduleType。此屬性指定實現IModule接口的模塊組合件中的類型。該屬性是必需的。

moduleName。該屬性指定模塊的名稱。該屬性是必需的。

startupLoaded。該屬性指定模塊是否在啓動時加載。如果其值爲true(這是默認值),則應在啓動時加載模塊。如果其值爲false,則不應在啓動時加載模塊;相反,它應該按需加載。該屬性不是必需的。

實現IModule的My OrderModule位於名稱空間NetworkOrderManagement.WPF_Modules.Order中。

任何想法?

回答

6

這可能是使用反射來根據其類型加載模塊。您必須使用完全限定的類型名稱才能進行反射。這通常是格式:「Full.Namespace.TypeName,AssemblyName」。這將是最基本的命名。如果這不能解決,那麼你必須開始添加附加屬性,包括版本,語言等等。

+0

它現在正在工作,我有「Namespace,TypeName」,沒有程序集。 – 2009-06-16 12:43:06