Wie registrieren Sie einen AutoMapper Profil mit Unity
Habe ich Folgendes AutoMapper Profil:
public class AutoMapperBootstrap : Profile
{
protected override void Configure()
{
CreateMap<Data.EntityFramework.RssFeed, IRssFeed>().ForMember(x => x.NewsArticles, opt => opt.MapFrom(y => y.RssFeedContent));
CreateMap<IRssFeedContent, Data.EntityFramework.RssFeedContent>().ForMember(x => x.Id, opt => opt.Ignore());
}
}
Und ich bin initialisieren es so:
var config = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new AutoMapperBootstrap());
});
container.RegisterInstance<IMapper>("Mapper", config.CreateMapper());
Wenn ich versuche zu injizieren es in meinem Konstruktor:
private IMapper _mapper;
public RssLocalRepository(IMapper mapper)
{
_mapper = mapper;
}
Ich erhalte die folgende Fehlermeldung:
Den aktuellen Typ, AutoMapper.IMapper, ist ein interface und kann nicht sein
gebaut. Sind Sie fehlt ein Typ-mapping?
Wie kann ich initialisieren die AutoMapper-Profil korrekt mit der Einheit, so dass ich verwenden können die mapper überall durch DI?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deinem Beispiel, die Sie erstellen, namens-Zuordnung:
Aber wie Ihr resolver wird wissen über diesen Namen?
Müssen Sie registrieren Sie die Zuordnung ohne Namen:
Wird es Karte die mapper-Instanz zu
IMapper
- Schnittstelle und wird diese Instanz zurückgegeben, auf die Beilegung SchnittstelleKönnen Sie es registrieren, zum Beispiel so:
Dann können Sie injizieren es als
IMappingEngine
.Mehr Informationen finden Sie hier:
https://kalcik.net/2014/08/13/automatic-registration-of-automapper-profiles-with-the-unity-dependency-injection-container/