У меня возникли проблемы с вводом AutoMapper в приложение ASP.NET MVC 2 с использованием Ninject. В качестве руководства я использовал сообщение Джимми Богарда в Конфигурация типа AutoMapper и StructureMap.
public class AutoMapperModule : NinjectModule
{
public override void Load()
{
Bind<ITypeMapFactory>().To<TypeMapFactory>();
Bind<Configuration>().ToSelf().InSingletonScope().WithConstructorArgument("mapper", MapperRegistry.AllMappers);
Bind<IConfiguration>().To<Configuration>();
Bind<IConfigurationProvider>().To<Configuration>();
Bind<IMappingEngine>().To<MappingEngine>();
}
}
Ninject генерирует исключение при разрешении Configuration
.
Ошибка активации IObjectMapper Нет соответствующих привязок, и тип не является самопереключаемым. Путь активации:
3) Инъекция зависимости IObjectMapper в параметрах-преобразователях конструктора типа Конфигурация
Обновление
Теперь это работает, используя следующую привязку:
Bind<ITypeMapFactory>().To<TypeMapFactory>();
Bind<Configuration>().ToConstant(new Configuration(Kernel.Get<ITypeMapFactory>(), MapperRegistry.AllMappers())).InSingletonScope();
Bind<IConfiguration>().ToMethod(c => c.Kernel.Get<Configuration>());
Bind<IConfigurationProvider>().ToMethod(c => c.Kernel.Get<Configuration>());
Bind<IMappingEngine>().To<MappingEngine>();
Я опубликовал модуль на GitHub. AutoMapper.Ninject. Дополнительная информация в моем блоге: http://binaryspeakeasy.com/2010/09/automapper-ninject/