Let's say I've designed a class A
and also I've designed a DTO class called Dto
.
If A
is a dynamic proxy generated with Castle DynamicProxy, AutoMapper won't fire AfterMap
:
mappingConfig.CreateMap<Dto, A>()
.AfterMap
(
(dto, a, resolutionContext) =>
{
// Stuff to do after automatic mapping has been already completed
}
);
// This won't fire AfterMap
Mapper.Map(dto, aProxy);
In the other hand, if I run the following code, AfterMap
will be called:
var a = new A();
Mapper.Map(dto, a);
Also, MappingConfiguration
is configured to automatically register types:
config.CreateMissingTypeMaps = true;
Currently I'm using AutoMapper 6.0.2. I can't figure out why this isn't working.
Update
After some trial-errors, It started to work once I commented out config.CreateMisstingTypeMaps
or I set it to false
.
I suspect that AutoMapper is creating a map between the DTO and AProxy
(which is a type generated during run-time) and prioritizes that mapping over the Dto
and A
as is.
Thus, how may I configure AutoMapper to both create missing type maps and also support my scenario?