的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 <>' –