我希望能够使用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<>));
答案 0 :(得分:3)
request.Target.Type
返回参数类型。您正在寻找request.Target.Member.ReflectedType
。由于您将上下文注入到相同的存储库中,因此您可能必须使用request.ParentRequest
甚至是父项而不是请求来检查父请求,因为您将始终获得存储库类型。