DbContext登録ユニティ設定でそのインスタンスを構築したり解決したりせずに正しいタイプを挿入することは可能ですか?
container.RegisterType<DbContext, MobileEntities>(GetLifetime());
container.RegisterType<DbContext, AuthenticationEntities>("AuthDb", GetLifetime());
汎用リポジトリ登録
container.RegisterType(typeof(IReadOnlyRepository<>), typeof(ReadOnlyRepository<>), GetLifetime());
container.RegisterType(typeof(IReadOnlyRepository<>), typeof(ReadOnlyRepository<>), "ReadOnlyAuth", GetLifetime(), new InjectionConstructor(
container.Resolve<DbContext>("AuthDb")
));
上記リポジトリは、その唯一のパラメータとしてDbContext
をとります。私は、提供されたジェネリックパラメータに基づいて注入したい複数のコンテキストを持っています。 適切なDbContext型をunity config内にインスタンスを構築したり解決したりせずに注入することは可能ですか?
container.RegisterType<IUserPermissionService, UserPermissionService>(GetLifetime(), new InjectionConstructor(
container.Resolve<IReadOnlyRepository<Customer>>("ReadOnlyAuth"),
container.Resolve<IReadOnlyRepository<VisitPlan>>("ReadOnlyAuth"),
container.Resolve<IReadOnlyRepository<UserBranch>>("ReadOnlyAuth"),
container.Resolve<IReadOnlyRepository<UserRoute>>("ReadOnlyAuth"),
container.Resolve<IReadOnlyRepository<UserDriverNumber>>("ReadOnlyAuth"),
container.Resolve<IReadOnlyRepository<UserActivity>>("ReadOnlyAuth"),
container.Resolve<IReadOnlyRepository<UserRole>>("ReadOnlyAuth")
));
上記Resolve<>
コールは、彼らが離れての解決され、登録されるまで実行されないように、私はそれを設定することはできますか?つまり、 'ReadOnlyAuth'を解決する要求が行われたときにのみcontainer.Resolve<DbContext>("AuthDb")
を実行するように設定できますか?
'IReadOnlyRepository <>'を解決しようとすると 'DependencyOverride'を使い、' DbContext'の現在のインスタンスを渡すことができますが、unity configからそれを移動したいのであれば 'IUnityContainer'を持っていて、 'IReadOnlyRepository <>' –