chobo2
chobo2

Reputation: 85875

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

Upvotes: 6

Views: 2167

Answers (2)

Khepri
Khepri

Reputation: 9627

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

public OtherController(IOtherService otherService, IBaseService baseService) : base(baseService)

Upvotes: 1

Matthew Abbott
Matthew Abbott

Reputation: 61617

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; }

Upvotes: 14

Related Questions