Sto cercando di capire il modo corretto di configurare AutoMapper nel file Startup.cs della mia applicazione e quindi utilizzarlo nell'intera applicazione.Configurazione di AutoMapper 4.2 con IoC integrato in ASP.NET Core 1.0 MVC6
Sto tentando di utilizzare this documentation che in qualche modo spiega come dare ancora a AutoMapper una sensazione statica senza la vecchia API statica. L'esempio utilizza StructureMap.
Mi piacerebbe sapere come posso fare qualcosa di simile, ma in un'app Core 1.0 che utilizza il contenitore dei servizi integrato.
Suppongo che nella funzione Configura configurerei AutoMapper e quindi nella funzione ConfiguraServizi lo aggiungerei come transitorio.
Suppongo che alla fine il modo più pulito e corretto per farlo sia l'iniezione di dipendenza. Qui è il mio tentativo in corso, ma non funziona:
Startup.cs
public IMapper Mapper { get; set; }
private MapperConfiguration MapperConfiguration { get; set; }
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IMapper, Mapper>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
MapperConfiguration MapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Product, ProductViewModel>().ReverseMap();
});
Mapper = MapperConfiguration.CreateMapper();
}
Nel mio controller:
private IMapper _mapper { get; set; }
// Constructor
public ProductsController(IMapper mapper)
{
_mapper = mapper;
}
public IActionResult Create(ProductViewModel vm)
{
Product product = _mapper.Map<ProductViewModel, Product>(vm);
}
Semplicemente non funziona a tutti .. Devo perdere qualche passo o fare qualcosa di sbagliato.
Non ho la risposta completa per questo (alle prese con me stesso!), Ma nel tuo AddTransient, la seconda param generica è il * tipo * di Mapper piuttosto che l'istanza di Mapper creata con CreateMapper. Sto indovinando che sarà qualcosa sulla falsariga dei servizi. Aggiunta invece. – DavidGouge