我正在尝试使用命名实例注册到相同接口的实现
kernel.Bind<IRepository>().To<CachedRepository>().InSingletonScope();
kernel.Bind<IRepository>().To<DbRepository>().InSingletonScope().Named("db");
这个想法是,如果我没有指定名称,那么就会创建 CachedRepository,如果我需要一个面向 DB 的,那么我会使用 Named 属性,但是当创建一个简单的对象时,这种悲惨的失败
public class TripManagerController : Controller
{
[Inject]
public IRepository Repository { get; set; } // default Cached repo must be created
public TripManagerController()
{
ViewBag.LogedEmail = "test@test.com";
}
}
错误是
激活 IRepository 时出错 有多个匹配的绑定可用。激活路径:2)将依赖IRepository注入到TripManagerController类型的构造函数的参数库中1)对TripManagerController的请求
建议: 1) 确保您只为 IRepository 定义了一次绑定。
有没有办法在不为面向 BD 的存储库创建新接口的情况下实现我想要的?谢谢