Attilah
Attilah

Reputation: 17932

dependency injection with asp.net mvc

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.ConnectionStrings[0].ConnectionString);


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

Upvotes: 1

Views: 407

Answers (2)

Omar
Omar

Reputation: 40202

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)

Upvotes: 3

Michael
Michael

Reputation: 20069

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

Upvotes: 2

Related Questions