Я новичок в Ninject и пытаюсь понять реализацию. Я ищу и читаю, может ли кто-нибудь указать мне на некоторые хорошие примеры и документацию, относящуюся к Ninject и MVC.Ninject 101 для MVC
Я могу заставить основы работать, я борюсь с привязками, которые имеют зависимости. Например, у меня есть следующие классы:
public class ScheduleService : IScheduleService
{
private IValidationDictionary validationDictionary;
public ScheduleService(IValidationDictionary validationDictionary)
{
this.validationDictionary = validationDictionary;
}
}
Это зависит от:
public class ModelStateWrapper : IValidationDictionary
{
private ModelStateDictionary _modelState;
public ModelStateWrapper(ModelStateDictionary modelState)
{
_modelState = modelState;
}
То, что я хочу создать привязки для:
Bind<IValidationDictionary>()
.To<ModelStateWrapper>();
Bind<IScheduleService>()
.To<ScheduleService>();
Как настроить привязки так мои контроллер может использовать ScheduleService? Как он получает ModelState?
Уточнение: Я хочу ввести это в класс обслуживания расписания, который обрабатывает бизнес-логику. У меня работает Ninject, просто не уверен, как обрабатывать зависимости. Ниже приведен код моего контроллера.
public class ScheduleController : ActivityController
{
private IScheduleService scheduleService;
public ScheduleController(IScheduleService scheduleService)
{
this.scheduleService = new ScheduleService(new ModelStateWrapper(this.ModelState));
}
Спасибо за ваше терпение, возможно, я не задаю правильный вопрос. Он строит, но когда я запускаю его, я получаю:
Ошибка активации IValidationDictionary Нет соответствующих привязок, и тип не является самопереключаемым. Путь Активации: 3) Инъекция зависимостей IValidationDictionary в параметре validationDictionary конструктора типа ScheduleService 2) Инъекция зависимостей IScheduleService в параметре scheduleService конструктора типа ScheduleController 1) запрос для ScheduleController
Предложений: 1) Обеспечить что вы определили привязку для IValidationDictionary. 2) Если привязка была определена в модуле, убедитесь, что модуль загружен в ядро. 3) Убедитесь, что вы случайно не создали несколько ядер. 4) Если вы используете автоматическую загрузку модуля, убедитесь, что путь поиска и фильтры правильные.
Я бы, вероятно, передумал это решение. ModelState является чем-то контекстуальным для конкретного действия и поэтому не может быть внедрен на глобальном уровне. –
Это также может быть актуально: http://stackoverflow.com/questions/4127184/ninject-error-he-icontrollerfactory-ninject-web-mvc-ninjectcontrollerfactory-d/4127715#4127715 –