repository - 使用 Ninject 2.2 绑定(bind)通用存储库和特定存储库

标签 repository ninject ninject-2

我有一个在 Repository 中实现的 IRepository,我将特定类型的 Repository 扩展为 UsersRepository 我需要使用 Ninject 的通用绑定(bind)来绑定(bind)所有类型,但是在为 IRepository 请求实例时,我需要获取 UsersRepository 而不是 Repository。

Bind<IDbContext>().To<SMSDataContext>()
.WithConstructorArgument("connectionStringName", "dbcsname");

这里我绑定(bind)了通用存储库:

Bind(typeof(IRepository<>)).To(typeof(Repository<>))
.WithConstructorArgument("dbContext",new SMSDataContext("dbcsname"));        

这里我尝试绑定(bind)一个特定的实例:

Bind<IRepository<Setting>>().ToConstant(settingsRepository);

尝试使用“.ToConstant”和仅使用“.To”的不同方法也尝试绑定(bind)到具体实现,如下所示:

 UsersRepository usersRepository = new UsersRepository(new SMSDataContext("SMSDB"));
 Bind<IRepository<Setting>>().To<SettingsRepository>().WithConstructorArgument("dbContext", new SMSDataContext("dbscname")); ;  

请指教。

最佳答案

目前只能使用一些作弊,因为开放通用绑定(bind)与封闭通用绑定(bind)具有相同的优先级。但是您可以通过添加条件来提高绑定(bind)的优先级。

Bind<IRepository<Setting>>().ToConstant(settingsRepository).When(ctx => true);

关于repository - 使用 Ninject 2.2 绑定(bind)通用存储库和特定存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236268/

相关文章:

repository - DDD 中的聚合可以有多个存储库吗?

node.js - 如何将下载的 npm 依赖项发布到私有(private)本地存储库?

asp.net-mvc - Ninject.MVC3,将 DependencyResolver 传递给服务层?

c# - Unity 中 RegisterInstance 的后期绑定(bind)版本

Ninject + Web API 2 : Error activating IFilterProvider using binding from IFilterProvider to DefaultFilterProvider

xcode - 从 Xcode 中的存储库中删除未引用的图像

Git 子存储库

c# - Ninject 组播

c# - ASP.NET MVC 3 : DefaultModelBinder with inheritance/polymorphism

asp.net-mvc - 我应该为每个模型创建一个接口(interface)吗?