2010-10-21 287 views
1

我有一個服務類:依賴注入asp.net的MVC

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

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

我的控制依賴於爲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>(); 

回答

3

Ninject.Extensions.Mvc。閱讀閱讀和文檔。它擁有你需要的一切。從外觀上來看,所有你需要的是正確設置你的HttpApplication從NinjectHttpApplication繼承,並添加適當的配置代碼(全部位於自述/ documenation)

2

你要創建自己的控制器工廠,注入的依賴,爲您和在Global.asax中註冊該工廠。

如果你使用的結構圖,可能是這樣的:

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

無論IOC容器的,你應該這樣做是爲了再找到鏈中其餘的依賴關係。 :) – ElvisLives 2010-10-21 15:01:14

+0

謝謝。我已經寫了這段代碼。 – Attilah 2010-10-24 03:31:22