Например, если у меня есть тип IMemberValueResolver:
Mapper.Initialize(cfg => {
cfg.CreateMap<Source, Destination>()
.ForMember(dest => dest.Total,
opt => opt.ResolveUsing<CustomResolver, decimal>(src => src.SubTotal));
cfg.CreateMap<OtherSource, OtherDest>()
.ForMember(dest => dest.OtherTotal,
opt => opt.ResolveUsing<CustomResolver, decimal>(src => src.OtherSubTotal));
});
public class CustomResolver : IMemberValueResolver<object, object, decimal, decimal> {
public decimal Resolve(object source, object destination, decimal sourceMember, decimal destinationMember, ResolutionContext context) {
// logic here
}
}
Что если мой CustomResolver принимает параметр в конструкторе, например:
public class CustomResolver : IMemberValueResolver<object, object, decimal, decimal> {
public CustomResolver(string text){
}
public decimal Resolve(object source, object destination, decimal sourceMember, decimal destinationMember, ResolutionContext context) {
// logic here
}
}
Как мне тогда создать карту для пользовательского распознавателя типа IMemberValueResolver?
Мы можем попытаться поставить экземпляр напрямую:
Mapper.Initialize(cfg => cfg.CreateMap<Source, Destination>()
.ForMember(dest => dest.Total,
opt => opt.ResolveUsing(new CustomResolver("Text"))
);
Но как в этом случае мы передаем, какой параметр источника мы хотим использовать для сопоставления в resolver?