2010-10-21 3 views
1

J'ai une classe de service:injection de dépendance avec 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; 
    } 
} 

mon contrôleur dépend de la MyService classL

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

comment puis-je injecter la classe MyService dans le contrôleur? devrais-je faire cela? :

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

      Bind<IPostsRepository>() 
       .To<SqlPostsRepository>() 
       .WithConstructorArgument("connectionString", 
ConfigurationManager.ConnectionStrings[0].ConnectionString); 


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

Répondre

3

Regardez Ninject.Extensions.Mvc. Lisez la lecture moi et la documentation. Il a tout ce dont vous avez besoin. De l'apparence de tout cela, tout ce dont vous aurez besoin est de configurer correctement votre HttpApplication pour hériter de NinjectHttpApplication et ajouter le bon code de configuration (tous situés dans le readme/document)

2

Vous devez créer votre propre fabrique de contrôleurs qui injecte les dépendances pour vous et enregistrer cette fabrique dans Global.asax.

Si vous utilisez la carte de la structure, qui pourrait ressembler à ceci:

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

Quel que soit le conteneur Ioc, vous devriez le faire pour ensuite trouver le reste des dépendances dans la chaîne. :) – ElvisLives

+0

merci. J'ai déjà ce code écrit. – Attilah

Questions connexes