Почему Ninject не разрешает защищенные свойства в базовом классе?

Я думаю, простой вопрос, но я потратил час на то, чтобы заставить базовые классы для моих контроллеров внедрить несколько сервисов посредством внедрения свойств. Сначала свойства были защищены областью, но объекты возвращались к нулю, как только я изменил область действия на общедоступную, это сработало. Есть ли способ защитить свойства и заставить IoC работать?

Вот моя установка.

public class BaseController : Controller
{
    [Inject]
    protected LoggingInterface.ILogger<BaseController> Logger { set; get; }

    [Inject]
    protected IRepository Repository { set; get; }

    protected override void OnAuthorization(AuthorizationContext filterContext)
    {
        ....

        base.OnAuthorization(filterContext);
    }
}

и загрузчик в NinjectMVC3 App_Start

    private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind(typeof(LoggingInterface.ILogger<>)).To(typeof(Log4NetLogger<>));
        kernel.Bind<IRepository>().To<Repository>();
        kernel.Bind<IUserService>().To<UserService>();
    } 

Спасибо Стивен

Ответы на вопрос(2)

Ваш ответ на вопрос