2

私は非常に基本的なプリズムアプリケーションを持っており、それをより大きなプロジェクトの開始として使用しようとしています。「MainContent」と呼ばれる単一の領域が定義されたシェルがあります。プロジェクトには3つのモジュールがあります。MainMenuModule、MovieModule、およびTVModule。MovieモジュールとTVモジュールは、MainMenuModuleに依存しています。モジュールは、DirectoryModuleCatalogを使用してロードされます。この問題は、TVModuleが含まれている場合に発生します。具体的には、TVModuleのコンストラクターが呼び出されたときに例外がスローされます。以下のコンストラクターはエラーをスローします:

public TVModule(IUnityContainer container, IRegionManager manager)
{
    _container = container;
    _manager = manager;
}

コンストラクターを次のように変更すると、例外は発生せず、TVModuleが期待どおりに読み込まれます。

public TVModule(IRegionManager manager)
{
    _manager = manager;
}

UnityがIUnityContainerを解決しようとすると、例外がスローされます。私を本当に困惑させているのは、MovieModuleのコンストラクターがTVModuleのコンストラクターとまったく同じでありながら、問題なく動作するという事実です。例外の詳細。

{"依存関係の解決に失敗しました、タイプ= \" TVModule.TVModule \ "、名前= \"(なし)\ "。解決中に例外が発生しました:解決中。例外は:InvalidOperationException-現在のタイプ、Microsoft.Practices.Unity。 IUnityContainerはインターフェイスであり、構築できません。型マッピングがありませんか?例外の時点で、コンテナーは次のとおりでした。

TVModule.TVModuleの解決(なし)コンストラクターTVModule.TVModuleのパラメーター「コンテナー」の解決(Microsoft.Practices.Unity.IUnityContainerコンテナー、Microsoft.Practices.Prism.Regions.IRegionManagerマネージャー)Microsoft.Practices.Unity.IUnityContainerの解決(無し) "}

{"現在のタイプであるMicrosoft.Practices.Unity.IUnityContainerはインターフェイスであり、構築できません。タイプマッピングがありませんか?"}

編集:ソースのコピーをここのドロップボックスにアップロードしました

4

1 に答える 1

0

Wiktorの提案から、Unityコンテナーをモジュールのコンストラクターに渡すことを削除しました。今では、必要なときにservicelocatorを使用してコンテナーにアクセスしています。

ServiceLocator.Current.GetInstance<IUnityContainer>();
于 2013-03-27T12:51:30.023 に答える