using AutoMapper.Extensions.EnumMapping;
public static void Main()
var configuration = new MapperConfiguration(cfg =>
cfg.CreateMap<string, SrcEnum>().ConvertUsing((string src, SrcEnum dest) => {
return Enum.Parse<SrcEnum>(src);
cfg.CreateMap<SrcEnum, DestEnum>().ConvertUsingEnumMapping(opt => opt
.MapValue(SrcEnum.A, DestEnum.E)
.MapValue(SrcEnum.B, DestEnum.F)
.MapValue(SrcEnum.C, DestEnum.G)
.MapValue(SrcEnum.D, DestEnum.H));
configuration.AssertConfigurationIsValid();
var mapper = configuration.CreateMapper();
var result1 = mapper.Map<SrcEnum>(input);
var result2 = mapper.Map<DestEnum>(result1);
Console.WriteLine($"Input value: {input.GetType().Name} \"{input}\"");
Console.WriteLine($"Mapped value 1: {result1.GetType().Name}.{result1}");
Console.WriteLine($"Mapped value 2: {result2.GetType().Name}.{result2}");