Подтвердить что ты не робот

Может ли AutoMapper Map между типом значения (Enum) и ссылочным типом? (Строка)

Странная проблема - я пытаюсь сопоставить между перечислением и строкой , используя AutoMapper:

Mapper.CreateMap<MyEnum, string>()
   .ForMember(dest => dest, opt => opt.MapFrom(src => src.ToString()));

Не волнуйтесь, что im использует .ToString(), на самом деле я использую метод расширения для самого перечисления (.ToDescription()), но я сохранил его просто для вопроса.

Вышеупомянутая ошибка ссылается на объект, когда im делает просто настройку отображения.

Учитывая, что это работает:

string enumString = MyEnum.MyEnumType.ToString();

Я не понимаю, почему моя конфигурация AutoMapper не работает.

Может ли AutoMapper справиться с этим, я что-то делаю неправильно, или это ошибка с AutoMapper?

Любые идеи?

ИЗМЕНИТЬ

Я также попытался использовать настраиваемый преобразователь:

Mapper.CreateMap<MyEnum, string>()
                .ForMember(dest => dest, opt => opt.ResolveUsing<MyEnumResolver>());

public class MyEnumResolver: ValueResolver<MyEnum,string>
{
   protected override string ResolveCore(MyEnum source)
   {
      return source.ToString();
   }
}

Такая же ошибка на той же строке.: (

4b9b3361

Ответ 1

Для сопоставления между двумя типами, где вы управляете всем отображением, используйте ConvertUsing:

Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString());

Все остальные методы предполагают, что вы сопоставляете отдельные элементы в типе адресата.