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

时间:2012-01-06 00:56:49

标签: dependency-injection ninject

我希望能够使用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<>));

1 个答案:

答案 0 :(得分:3)

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