我正在学习 Ninject 以及如何在 MVC 情况下实现它。我试图找出设置以下场景的最佳方法/实践。
我有一个团队对象,它将在整个应用程序中重复使用,我需要做的是让 Ninject 根据请求的来源自动解析绑定(bind)。
在我的 NinjectController 工厂中,我目前有一个将团队解析到其适当存储库的服务
Bind<ITeamRepository>().To<SwimTeamRepository>() // non-space characters to enable edit submission
但是如果请求来自 SoccerController,我需要绑定(bind):
Bind<ITeamRepository>().To<SoccerTeamRepository>()
这是否应该有条件地完成,设置单独的服务?这里最好的方法是什么?或者我在这里完全偏离了轨道......
最佳答案
听起来您可能想要使用 contextual binding .如果这没有帮助,也许您可以重新表述问题,以便我更好地了解您正在寻找的内容。
这在编辑后更有意义。我不完全确定你的应用程序是如何构建的,但我可能会将 ITeamRepository 传递给 Controller ,构造函数看起来像这样。
public SoccerController(ITeamRepository repository)
{
_repository = repository;
}
public SwimmingController(ITeamRepository repository)
{
_repository = repository;
}
然后是绑定(bind):
Bind<ITeamRespository>().To<SoccerRepository>().WhenInjectedInto(typeof(SoccerController));
Bind<ITeamRespository>().To<SwimmingRepository>().WhenInjectedInto(typeof(SwimmingController));
关于c# - 根据 Controller 请求绑定(bind) Ninject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5915256/