使用asp.net mvc进行依赖注入

时间:2010-10-21 04:40:07

标签: c# .net dependency-injection ninject

我有一个服务类:

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>();

2 个答案:

答案 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);  
    }  
}