根据Controller请求绑定Ninject

kee*_*eeg 8 c# asp.net-mvc binding ninject

我刚学习Ninject以及如何在MVC情况下实现它.我试图找出设置以下场景的最佳方法/实践.

我有一个团队对象,它将在整个应用程序中重复使用,我需要做的是让Ninject根据请求的来源自动解析绑定.

在我的NinjectController工厂中,我目前有一个服务,可以将团队解析为适当的存储库

Bind<ITeamRepository>().To<SwimTeamRepository>() // non-space characters to enable edit submission
Run Code Online (Sandbox Code Playgroud)

但是如果请求来自SoccerController,我需要绑定:

Bind<ITeamRepository>().To<SoccerTeamRepository>()
Run Code Online (Sandbox Code Playgroud)

如果这是有条件的,建立单独的服务?这里最好的方法是什么?或者我完全离开这里......

Tim*_*ple 12

听起来你可能想要使用上下文绑定.如果这没有帮助,也许你可以重新解释这个问题,这样我就可以更好地了解你正在寻找什么.

这在编辑后更有意义.我不完全确定你的应用程序是如何构建的,但我可能会将ITeamRepository传递给控制器​​,构造函数看起来像这样.

public SoccerController(ITeamRepository repository)
{
    _repository = repository;
}

public SwimmingController(ITeamRepository repository)
{
    _repository = repository;
}
Run Code Online (Sandbox Code Playgroud)

然后是绑定:

Bind<ITeamRespository>().To<SoccerRepository>().WhenInjectedInto(typeof(SoccerController));
Bind<ITeamRespository>().To<SwimmingRepository>().WhenInjectedInto(typeof(SwimmingController));
Run Code Online (Sandbox Code Playgroud)