2012-05-23 3 views
1

Я использую Ninject.MVC3.Свойство или конструкция Ninject для инъекций ASP.NET MVC3

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<Repository>().To<Repository>(); 
}  

Зарегистрировать их так, как показано в App_Start. Он отлично работает на контроллере, который запрашивает этот репозиторий. Однако у меня также есть несколько классов, которым нужен этот репозиторий.

 [Inject] 
     public MemberShipService(Repository repository) 
     { 
      this.Repository = repository; 
     } 

^Пример из конструктора класса. Я пробовал впрыск конструктора, это просто дает мне ошибки, потому что он запрашивает аргумент для конструктора. Впрыск свойств просто не работает.

Нужно ли мне что-то делать, чтобы сделать конструктор или работу по вложению свойств в asp.net mvc3? Я еще не сделал никакой другой конфигурации внутри NinjectWebCommon, кроме строки, которую я разместил выше.

+0

Как получить экземпляр класса 'MemberShipService'? Атрибут '[Inject]' используется для свойств => он не влияет на конструкторы. –

ответ

3

Вам необходимо разрешить экземпляр класса, используя распознаватель зависимостей для того, чтобы использовать его, создать экземпляр вашего MemberShipService с помощью:

var memberShipService = 
    DependencyResolver.Current.GetService(typeof(MemberShipService)) as MemberShipService; 

Это будет связать ваш экземпляр переменной Repository с помощью конструктора, вы указали.

+0

Спасибо, что это отлично работает. – Nick

+0

Без проблем, рад, что смогу помочь – mattytommo

Смежные вопросы