有没有办法制作一个绑定,上面写着“当将 IService 注入区域内的任何控制器时,管理员注入此实例”?
我们在 Admin 中有许多控制器,它们可能使用相同的服务。我们可以为每个控制器编写绑定,但随后可能会使用相同的服务引入另一个控制器,而开发人员忘记专门为 Admin 连接它(它使用与其他区域或区域外不同的服务实现集)。
// this is the default
kernel.Bind<ICategorizationRepository<DirectoryCategory>>().To<CachedJsonCategorizationProvider<DirectoryCategory>>().InRequestScope();
// Admin bindings use noncaching repositories
kernel.Bind<ICategorizationRepository<DirectoryCategory>>().To<JsonCategorizationProvider<DirectoryCategory>>().WhenInjectedInto<Areas.Admin.Controllers.DirectoryCategorizationController>().InRequestScope();
kernel.Bind<ICategorizationRepository<DirectoryCategory>>().To<JsonCategorizationProvider<DirectoryCategory>>().WhenInjectedInto<Areas.Admin.Controllers.DirectoryEntryController>().InRequestScope();
// .. new controller that uses ICategorizationRepo might be created but the developer forgets to wire it up to the non caching repository - so the default one will be used, which is undesirable
我想说:在管理区域内注入任何内容时,请使用此...