I'm using:
In my solution i have:
I have setup automapper using dependency injection following the guide as described here
So: in startup.cs of TVC_PORTAL in ConfigureServices method i have:
services.AddAutoMapper(typeof(AutomapProfileGen));
where i use AutoMapProfileGen is one of the marker types for AddAutoMapper to locate the TVC_DATA assembly where the other profiles are located as well.
In my ObjectController i inject IMapper:
public ObjectController(IHostingEnvironment environment, IMapper mapper)
{
_hostingEnvironment = environment;
_mapper = mapper;
}
And i use the mapper later on:
IEnumerable<ObjectViewType> vList = _mapper.Map<IEnumerable<ObjectType>, IEnumerable<ObjectViewType>>(mList);
My profiles are pretty straightforward, for example:
public class AutomapProfileSrc : Profile
{
public AutomapProfileSrc()
{
//source data
CreateMap<AirlineView, Airline>().ReverseMap();
CreateMap<AirlineListView, Airline>().ReverseMap();
CreateMap<AirportView, Airport>().ReverseMap();
CreateMap<AirportListView, Airport>().ReverseMap();
CreateMap<CountryView, Country>().ReverseMap();
CreateMap<CountryListView, Country>().ReverseMap();
}
}
My question: i want to set some global config options for automapper and cannot figure out where/how to set them. For example: i want to set ValidateInlineMaps to false (because that was mentioned as a solution when AssertConfigurationIsValid throws 'member not mapped' exceptions). Also i want to set MaxDepth to 1 for all maps to avoid circular references. What i tried:
1) Set ValidateInlineMaps to false in all profile constructors: doesn't work.
public class AutomapProfileCfg : Profile
{
public AutomapProfileCfg()
{
ValidateInlineMaps = false;
...
2) Create a MapperConfiguration object in ConfigureServices like:
'var config = new MapperConfiguration(cfg =>
{
cfg.ForAllMaps((typeMap, mappingExpression) => { mappingExpression.MaxDepth(1); });
cfg.AllowNullCollections = true;
cfg.ValidateInlineMaps = false;
//cfg.Advanced.MaxExecutionPlanDepth = 1;
});'
But i do not know how to link it to the mapper instance: just creating is not changing the mapper's behaviour.
Have been going through documentation and searching this site for almost a day now: is getting frustrating because this looks like it must be simple....but somehow i can't get it to work. Any help would be much appreciated
Any global config actions can be specified directly when configuring the service:
services.AddAutoMapper(cfg =>
{
cfg.ValidateInlineMaps = true;
...other config stuff
}, typeof(AutomapProfileGen));