c# – dependency injection with asp.net mvc – Education Career Blog

I have a service class :

public class MyService : IService
{
    private IRepoA repoA;
    private IRepoB repoB;

    public MyService(IRepoA repoA,IRepoB repoB)
    {
        this.repoA=repoA;
        this.repoB=repoB;
    }
}

my Controller depends on the MyService classL

public MyController : DefaultController
{
    IService myService;
    public MyController(IService service)
    {
        myService=service;
    }
 }

how do I inject the MyService class into the controller ?
should i do this ? :

 Bind<IPostService>()
                .To<PostService>();

            Bind<IPostsRepository>()
                .To<SqlPostsRepository>()
                .WithConstructorArgument("connectionString", 
 ConfigurationManager.ConnectionStrings0.ConnectionString);


            Bind<IUserRepository>()
                .To<FakeUserRepository>();

,

Look at Ninject.Extensions.Mvc. Read the read me and documentation. It has everything you need. From the looks of it, all you’ll need is to properly setup your HttpApplication to inherit from NinjectHttpApplication and add the proper config code (all located in the readme/documenation)

,

You’ll want to create your own controller factory that injects the dependencies for you and register that factory in Global.asax.

If you’re using structure map, that could look like this:

public class IoCControllerFactory : DefaultControllerFactory   
{  
    protected override IController GetControllerInstance(Type controllerType)  
    {
        return (Controller)ObjectFactory.GetInstance(controllerType);  
    }  
}  

Leave a Comment