c# - I'm using ninject 3.0 and asp.net mvc 3. I get the error rror activating IProductRepository -


i new mvc im fallowing book example. when run program gives me error: error activating iproductrepository no matching bindings available, , type not self-bindable. activation path...

i have read bunch of articles , other error 1 none of them helped. why happening if same in book example? please appreciated.

public class ninjectcontrollerfactory : defaultcontrollerfactory {     private ikernel ninjectkernel;      public ninjectcontrollerfactory()     {         ninjectkernel = new standardkernel();     }      protected override icontroller getcontrollerinstance(requestcontext requestcontext,        type controllertype)     {         return controllertype == null             ? null             : (icontroller)ninjectkernel.get(controllertype);     }      private void addbindings()     {         ninjectkernel.bind<iproductrepository>().to<efproductrepository>();      } } 

global.asax.cs

 protected void application_start()     {         arearegistration.registerallareas();          registerglobalfilters(globalfilters.filters);         registerroutes(routetable.routes);         controllerbuilder.current.setcontrollerfactory(new ninjectcontrollerfactory());     } 

iproductrepository.cs

public interface iproductrepository {     iqueryable<product> products { get; } } 

efproductrepository.cs

public class efproductrepository : iproductrepository {    private efdbcontext context = new efdbcontext();    public iqueryable<product> products     {         { return context.products; }                } }  public class efdbcontext : dbcontext {     public dbset<product> products { get; set; }     } 

productcontroller.cs

public class productcontroller : controller {     private iproductrepository repository;      public productcontroller(iproductrepository repoparam)     {         repository = repoparam;     }      public viewresult list()     {         return view(repository.products);     } } 

change method accept ikernel parameter:

private void addbindings(ikernel kernel) {     kernel.bind<iproductrepository>().to<efproductrepository>();  } 

then mike suggests call ninjectcontrollerfactory constructor method:

public ninjectcontrollerfactory() {     ninjectkernel = new standardkernel();     addbindings(ninjectkernal); } 

Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -