我有一个我在Repository中实现的IRepository,我为特定类型扩展了Repository,因为UsersRepository我需要使用Ninject的泛型绑定绑定所有类型,但是当请求IRepository的实例时,我需要获取UsersRepository而不是Repository。 / p>
Bind<IDbContext>().To<SMSDataContext>()
.WithConstructorArgument("connectionStringName", "dbcsname");
这里我绑定了通用存储库:
Bind(typeof(IRepository<>)).To(typeof(Repository<>))
.WithConstructorArgument("dbContext",new SMSDataContext("dbcsname"));
这里我试图绑定一个特定的实例:
Bind<IRepository<Setting>>().ToConstant(settingsRepository);
用“。ToConstant”尝试了不同的方法,只有“.To”也尝试绑定到具体的实现,如下所示:
UsersRepository usersRepository = new UsersRepository(new SMSDataContext("SMSDB"));
Bind<IRepository<Setting>>().To<SettingsRepository>().WithConstructorArgument("dbContext", new SMSDataContext("dbscname")); ;
请告知。
答案 0 :(得分:3)
目前只能使用一些作弊,因为开放式通用绑定与封闭式通用绑定具有相同的优先级。但是您可以通过添加条件来增加绑定的优先级。
Bind<IRepository<Setting>>().ToConstant(settingsRepository).When(ctx => true);