Reference handling
Mapperly can support mapping object structures with circular references.
To opt in for reference handling set UseReferenceHandling
to true
:
[Mapper(UseReferenceHandling = true)]
public partial class CarMapper
{
public partial CarDto CarToCarDto(Car car);
}
This enables the usage of a default reference handler which reuses the same target object instance if encountered the same source object instance.
Custom reference handler
To use a custom IReferenceHandler
implementation,
a parameter of the type Riok.Mapperly.Abstractions.ReferenceHandling.IReferenceHandler
annotated with the Riok.Mapperly.Abstractions.ReferenceHandling.ReferenceHandlerAttribute
can be added to the mapping method.
[Mapper(UseReferenceHandling = true)]
public partial class CarMapper
{
public partial CarDto CarToCarDto(Car car, [ReferenceHandler] IReferenceHandler myRefHandler);
}
User implemented mappings
To make use of the IReferenceHandler
in a user implemented mapping method,
add a parameter as described in the section "Custom reference handler".