これに問題がありますRegisterType
。
container.RegisterType<IFoo, Foo>("Foo", new ContainerControlledLifetimeManager());
私が作成する各モジュールには、同様の最後のレジスタが含まれます。別のモジュールは、具体的なタイプとしてFoo2、Foo3を実装します。
外部モジュールではキーを使用してこのオブジェクトを呼び出すため、レジスタタイプに名前を含める必要があります。
問題はモジュールの内部にもあり、コンストラクターではパラメーターとしてIFooが必要です(これを行うには、オブジェクトがContainerControlledLifetimeManagerである必要があります)。関数RequestNavigateを設定して、viewModelを生成しようとすると次のようになります。
public class FooViewModel
{
// here cannot create the object.
public FooViewModel(IFoo foo, ...)
{ .. }
}
そしてそれは投げます:
ResolutionFailedExceptionは、ユーザーコードによって処理されませんでした。依存関係の解決に失敗しました。type="System.Object"、name="FooView"。例外が発生しました:解決中。例外は次のとおりです。InvalidOperation-現在のタイプPrism4Demo.ModuleA.IFooはインターフェイスであり、構築できません。欠落しているタイプが欠落していますか?