Я пробовал различные перестановки этого, но мою текущую конфигурацию (как это относится к AutoMapper), как это:не удается разрешить с помощью AutoMapper.IMapper AutoMapper 4.2 с Autofac
builder.RegisterAssemblyTypes().AssignableTo(typeof(Profile)).As<Profile>();
builder.Register(c => new MapperConfiguration(cfg =>
{
foreach (var profile in c.Resolve<IEnumerable<Profile>>())
{
cfg.AddProfile(profile);
}
})).AsSelf().SingleInstance();
builder.Register(c => c.Resolve<MapperConfiguration>().CreateMapper(c.Resolve)).As<IMapper>().InstancePerLifetimeScope();
builder.RegisterType<MappingEngine>().As<IMappingEngine>();
У меня есть конструктор, с помощью IMapper mapper
, однако Я по-прежнему получать YSOD:
None of the constructors found with'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'
on type '' can be invoked with the available services and parameters:
Cannot resolve parameter 'AutoMapper.IMapper mapper' of constructor
'Void .ctor(...,...,..., AutoMapper.IMapper)'.
Этот класс отлично работает без ссылки automapper поэтому я уверен, что проблема заключается в моей конфигурации automapper.
Я не уверен, что мне здесь не хватает, поскольку я очень новичок как в AutoFac, так и в AutoMapper.
Edit:
Я также попытался:
builder.Register(c => new MapperConfiguration(cfg =>
{
cfg.CreateMap<IdentityUser, AspNetUser>().ReverseMap();
})).AsSelf().SingleInstance();
builder.Register(ctx => ctx.Resolve<MapperConfiguration>().CreateMapper()).As<IMapper>();
//I've tried both of these lines separately, neither work
builder.Register(c => c.Resolve<MapperConfiguration>().CreateMapper(c.Resolve)).As<IMapper>().InstancePerLifetimeScope();
Я также попытался вручную добавлять профили за предложение в комментариях
Что произойдет, если вы временно добавите свои профили вручную вместо использования 'IEnumerable'? –
devuxer
@devuxer см. Мое обновление. Это тоже не работает :( – Eonasdan
Я думаю, что ваш код сканирования сборки может быть не совсем прав, но я пробовал остальную часть вашего кода в тестовом приложении, и он отлично работает. Поэтому что-то еще должно вызывать проблему. вы разместили точку останова на линии, где вы регистрируете свой «IMapper», чтобы убедиться, что на самом деле он попал? – devuxer