Dependency injection 根据注入目标类型绑定到不同的上下文

Dependency injection 根据注入目标类型绑定到不同的上下文,dependency-injection,ninject,Dependency Injection,Ninject,我希望能够使用ninject将不同类型的DBContext注入应用程序的不同区域。有人知道你是否可以用ninject-When子句来实现这一点吗 大致如下: Bind<DbContext>().To<ServiceContext1>().When(t=>t.Target.Type.Assembly.FullName.StartsWith("Namespace.Context1.")); Bind<DbContext>().

我希望能够使用ninject将不同类型的DBContext注入应用程序的不同区域。有人知道你是否可以用ninject-When子句来实现这一点吗

大致如下:

        Bind<DbContext>().To<ServiceContext1>().When(t=>t.Target.Type.Assembly.FullName.StartsWith("Namespace.Context1."));
        Bind<DbContext>().To<ServiceContext2>().When(t => t.Target.Type.Assembly.FullName.StartsWith("Namespace.Context2."));
        Bind(typeof(IRepositoryDataSource<>)).To(typeof(DbContextRepositoryDataSource<>));
        Bind(typeof(IRepository<>)).To(typeof(SimpleRepository<>));
Bind().To().When(t=>t.Target.Type.Assembly.FullName.StartsWith(“Namespace.Context1”);
Bind().To().When(t=>t.Target.Type.Assembly.FullName.StartsWith(“Namespace.Context2”);
绑定(typeof(IRepositoryDataSource))。到(typeof(DbContextRepositoryDataSource));
绑定(typeof(IRepository))到(typeof(SimpleRepository));

request.Target.Type返回参数类型。您正在查找
request.Target.Member.ReflectedType
。由于将上下文注入到相同的存储库中,您可能必须使用
request.ParentRequest
检查父请求,甚至检查父级请求,而不是检查请求,因为在那里您将始终获得存储库类型