Этот человек сводит меня с ума. Я прочитал документы Ninject, я прочитал документы для расширения Ninject MVC, я потерял счетчик количества связанных вопросов SO, которые я прочитал, и я понятия не имею, где проблема с моим кодом.Проблемы с интеграцией Ninject
Я создаю webapp в ASP.NET MVC 4, и я использую Ninject для связывания интерфейсов репозитория. Документы говорят, что если вы добавите Ninject с помощью NuGet (что я и сделал), то он проложит все для вас, поэтому вам не нужно наследовать приложение от NinjectHttpApplication
(так что я этого не сделал), и вам просто нужно добавить свой привязки в NinjectWebCommon.RegisterServices()
, (которые у меня есть). У меня есть IRepository<T>
и Repository<T>
. В пользовательском репозитории есть несколько дополнительных методов для входа и регистрации, поэтому есть отдельный UserRepository
, который реализует IRepository<User>
. Мои привязки поэтому выглядеть следующим образом:
kernel.Bind(typeof(IRepository<>)).To(typeof(BaseRepository<>)).InRequestScope();
kernel.Bind(typeof(IRepository<User>)).To(typeof(UserRepository)).InRequestScope();
Документов и пару SO вопросов, также отметить, что если вы добавили Ninject хотя NuGet (что я и сделал), то он перебирает контроллер завод для вас и вы не Не нужно внедрять собственную фабрику контроллера Ninject-y (так что я ее не знаю). Мои контроллеры наследуют от BaseController
, который имеет конструктор, который принимает набор IRepository
-совместимых репозиториев. Теперь, из того, что я прочитал, когда я пытаюсь использовать контроллер, Ninject должен распознать параметры IRepositoriy
и предоставить их. Это не так. Даже если я поместил атрибут [Inject]
в конструктор, он все равно проигнорируется - вместо этого вызывается конструктор без параметров. Если я удалю конструктор без параметров, я получаю ошибку компиляции, жалуясь, что ее нет.
Что я пропустил? Как я могу получить Ninject для предоставления своих репозиториев?
Huh. Я только начал этот проект, поэтому я начинаю задаваться вопросом, будет ли меньше работать, чтобы начать ... – anaximander
Да, начните сначала. Мне потребовалось меньше минуты, чтобы издеваться над этим образцом. –
Ну ... не уверен, что это считается «решением», рассматривающим проблему как-то не существует, но это объясняет в приятной кратким постом процесс, который мне пришлось собрать из неопределенных и/или странно написанных документов, поэтому вы получить согласие: P – anaximander