的DbContext注册记忆是否可以注入正确的类型而无需在Unity配置中构造或解析它的实例?
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配置中构造或解析它的实例?
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'的当前实例,但是如果您想从统一配置中移动它,您可能应该有'IUnityContainer'并直接调用'IReadOnlyRepository <>' –