c# - Dependency Injection / Constructor Injection Help -


i have following classes / interfaces:

public interface iprojectrepository {     iqueryably<project> getprojects(); }  // depends on ef context public projectrepository : iprojectrepository {     private mydbentities context;      public projectrepository(mydbentities context)     {         this.context = context;     }      public iqueryable<project> getprojects()      {         return context.projects;     } } 

my controller:

 // depends on iprojectrepository  public class projectscontroller : controller  {      private iprojectrepository projectrepository;       public projectscontroller(iprojectrepository projectrepository)      {          this.projectrepository = projectrepository;      }       public actionresult index()      {          return view(projectrepository.getprojects());      }  } 

i need set dependency injection passes in projectrepository controller and needs pass in entity framework context project repository. need entity context http request scoped.

i'm not sure supposed put mapping code make dependency injection work. don't understand how mvc work without default constructor.

can me put pieces together? using structuremap switch else because have no idea i'm doing.

when using structuremap have in controller:

private static iprojectrepository getprojectrepository() {     var retval = objectfactory.trygetinstance<iprojectrepository>()                   ?? new projectrepository();     return retval; } 

if trygetinstance returns null (because nothing set type) default concrete type specify.

now have bootstrapper somewhere this:

public static class structuremapbootstrapper {     public static void initializestructuremap()     {         objectfactory.initialize(x =>         {             x.for<iprojectrepository>().use<projectrepository>();         }     } } 

now call bootstrapper in global.asax application_start event:

    protected void application_start()     {         structuremapbootstrapper.initializestructuremap();     } 

now in test project, when want inject mock repository can this:

    [testmethod]     public void somecontrollertest()     {         structuremap.objectfactory.inject(            typeof(iprojectrepository),            new mockprojectrepository());          // ... test of controller mock     } 

Comments

Popular posts from this blog

linux - Using a Cron Job to check if my mod_wsgi / apache server is running and restart -

actionscript 3 - TweenLite does not work with object -

jQuery Ajax Render Fragments OR Whole Page -