Я пытаюсь настроить AutoMapper для создания экземпляров всех объектов через Ninject. У меня есть следующий код в моем global.asax файлеAutoMapper с Ninject
Mapper.Configuration.ConstructServicesUsing(x => kernel.Get(x));
И как пример у меня есть следующее отображение
Mapper.CreateMap<TestModel, IndexViewModel>();
Однако это, кажется, не работает. Я получаю сообщение об ошибке, что «IndexViewModel» не имеет конструктора по умолчанию.
Я могу заставить обработчик работать, явно указывая automapper на использование ninject в отображении.
Mapper.CreateMap<TestModel, IndexViewModel>().ConstructUsingServiceLocator();
Однако, я бы предпочел не делать этого для каждого отображения. Я что-то упускаю?
Вы не предоставили источник IndexViewModel; имеет ли он конструктор по умолчанию? –
@Peter Нет, у него нет конструктора по умолчанию. Если я добавлю один AutoMapper, не создаст IndexViewModel никаких проблем, однако он не будет использовать Ninject для этого. – WDuffy
Почему у моделей вашего представления нет конструкторов по умолчанию? Зачем вам нужно, чтобы они управлялись Ninject? Просмотр моделей без стандартных конструкторов вызовет много головных болей. Что относительно действий контроллера POST, которые принимают эти модели представления в качестве аргументов действия? Вам придется писать для них специальные привязки моделей. Кажется сложным. –