我有一个服务类:
public class MyService : IService
{
private IRepoA repoA;
private IRepoB repoB;
public MyService(IRepoA repoA,IRepoB repoB)
{
this.repoA=repoA;
this.repoB=repoB;
}
}
我的Controller依赖于MyService classL
public MyController : DefaultController
{
IService myService;
public MyController(IService service)
{
myService=service;
}
}
如何将MyService类注入控制器? 我应该这样做吗? :
Bind<IPostService>()
.To<PostService>();
Bind<IPostsRepository>()
.To<SqlPostsRepository>()
.WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings[0].ConnectionString);
Bind<IUserRepository>()
.To<FakeUserRepository>();
答案 0 :(得分:3)
看看Ninject.Extensions.Mvc。阅读阅读我和文档。它拥有您需要的一切。从它的外观来看,你所需要的就是正确设置你的HttpApplication继承NinjectHttpApplication
并添加正确的配置代码(全部位于自述文件/文档中)
答案 1 :(得分:2)
您需要创建自己的控制器工厂,为您注入依赖项并在Global.asax中注册该工厂。
如果您正在使用结构图,则可能如下所示:
public class IoCControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
return (Controller)ObjectFactory.GetInstance(controllerType);
}
}