UnityBootstrapper
の私のサブクラスでは、クラスのConfigureContainer()
メソッドでタイプを登録します。この質問のために、インターフェイスタイプと実装クラスは無関係です。それらは存在し、解決することができます。関連するのは、インターフェイスとタイプが、ロードするモジュールを含む同じアセンブリ(C)に定義されているということです。Unityの登録がPrismの自分のモジュールを見つけるのを妨げるのはなぜですか?
私はアセンブリ内に2つの他のモジュールを持っていますとBです。これらのモジュールは、ブートストラップのInitializeModules()
メソッドで使用されるDirectoryModuleCatalog
によって検出されます。アセンブリのモジュールではありません。
問題のある登録を削除すると、Cが見つかりました。インターフェイスとターゲットクラスを別のアセンブリに移動して登録を再追加すると、Cが再び見つかります。私は内部ブートストラップからにCのモジュールのコンストラクタを登録を移動し、注入IUnityContainer
を使用してそこに登録する
、モジュールが見出され、登録が成功しています。
したがって、登録の順序と場所が何らかの理由でモジュールの読み込みに影響を与えているようで、例外なく静かに実行しているようです。現時点では、私は "モジュールのコンストラクタでのモジュールのアセンブリからのレジスタ型"アプローチを採用していますが、これは回避策のように感じられます。
「これを行う方法」ですか?これは既知の制限またはバグですか?
振り返ってみると意味があります。私たちのモジュールを削除する必要がある場合、登録を「後ろに」残すことは望ましくありません。モジュールを「見つけられない」代わりに例外や何かをスローしたかったら – Kit