Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ninject with a base controller?

I am wondering how do you do constructor inject with ninject 2.0 when you have a base controller?

I have

        private readonly IBaseService baseService;

        public BaseController(IBaseService baseService)
        {
            this.baseService = baseService;

        }


Bind<IBaseService>().To<BaseService>();


public class OtherController : BaseController
{
        private readonly IOtherService otherService;

        public OtherController(IOtherService otherService, IBaseService baseService) 
        {
            this.otherService = otherService;
        }

Yet I get

'BaseController' does not contain a constructor that takes 0 arguments

like image 412
chobo2 Avatar asked Apr 19 '11 18:04

chobo2


2 Answers

You need to inject both services into your OtherController and call the base constructor passing the service it requires:

public OtherController(IOtherService otherService, IBaseService baseService)
    : base(baseService) { this.otherService = otherService; }
like image 164
Matthew Abbott Avatar answered Nov 08 '22 01:11

Matthew Abbott


You'd have to chain through to the base controller, no?

public OtherController(IOtherService otherService, IBaseService baseService) : base(baseService)
like image 28
Khepri Avatar answered Nov 08 '22 03:11

Khepri