Skip to main content

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".