开发者

dependency injection with asp.net mvc

开发者 https://www.devze.com 2023-01-20 22:20 出处:网络
I have a service class : public class MyService : IService { private IRepoA repoA; private IRepoB repoB; public MyService(IRepoA repoA,IRepoB repoB)

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<IPost开发者_运维百科sRepository>()
                .To<SqlPostsRepository>()
                .WithConstructorArgument("connectionString", 
 ConfigurationManager.ConnectionStrings[0].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);  
    }  
}  
0

精彩评论

暂无评论...
验证码 换一张
取 消