2009-06-12 23 views
5

私はプリズムを例として使用しています。これは初めてのWPFで遊んでいます。私は2つのモジュールを書いた。 orderModuleおよびorderDetailModule。私は自分のアプリを実行して1つの画面に表示させることができましたが、今はモジュールを1つだけロードし、もう1つはボタンクリックでロードしようとしています。私は以前にコードでモジュールをロードしていましたが、プリズムがxmlを使用していることに気づいたので、これもやってみようとしています。それはそれらを見つけることができません何らかの理由で、私が手に完全なエラーは次のとおりです。モジュールタイプを取得できませんエラー

Microsoft.Practices.Composite.Modularity.ModuleInitializeExceptionは、未処理だった からのメッセージ= "、モジュールタイプNetworkOrderManagement.WPF_Modules.Orderを取得できませんOrderModuleロードされたアセンブリ。完全修飾型の名前を指定する必要があります。あなたのモジュールを定義し、モジュールの構成セクション内link text

から

<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"/> 

これは私のapp.configを内のモジュール部分です。これを行うには、モジュールのXML要素を追加します。この要素の属性は次のとおりです。

assemblyFileこの属性は、モジュールのアセンブリの場所を指定します。この属性は必須です。

moduleType。この属性は、モジュールのアセンブリ内でIModuleインタフェースを実装する型を指定します。この属性は必須です。

moduleName。この属性は、モジュールの名前を指定します。この属性は必須です。この属性は、起動時にモジュールが読み込まれるかどうかを指定します。その値がtrueの場合(これがデフォルト値)、起動時にモジュールをロードする必要があります。その値がfalseの場合、起動時にモジュールをロードすべきではありません。代わりに、必要に応じてロードする必要があります。この属性は必須ではありません。

IModuleを実装するMy OrderModuleは、NetworkOrderManagement.WPF_Modules.Orderという名前空間にあります。

すべてのアイデア?

答えて

6

これはおそらく、リフレクションを使用して、そのタイプに基づいてモジュールをロードしている可能性があります。リフレクションが機能するには、完全修飾タイプ名を使用する必要があります。これは通常、 "Full.Namespace.TypeName、AssemblyName"という形式です。これは最も基本的な命名になります。これで解決できない場合は、バージョン、言語などの追加属性を追加する必要があります。

+0

これで、「名前空間、型名」にアセンブリがなくなりました。 –

関連する問題