Я новичок в Ninject и пытаюсь выяснить реализацию. Я ищу и читаю, может кто-нибудь указать мне несколько хороших примеров и документации, специфичной для Ninject и 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) Если вы используете автоматическую загрузку модуля, убедитесь в правильности пути поиска и фильтров.