Автокартопостроитель: Отобразите Перечисление на [Описание] атрибут

У меня есть исходный объект, который похож на это:

private class SourceObject {
    public Enum1 EnumProp1 { get; set; }
    public Enum2 EnumProp2 { get; set; }
}

Перечисления украшены пользовательским [Description] атрибут, который обеспечивает строковое представление, и у меня есть дополнительный метод .GetDescription() это возвращает его. Как я отображаю эти перечислимые свойства с помощью того расширения?

Я пытаюсь отобразиться на объект как это:

private class DestinationObject {
    public string Enum1Description { get; set; }
    public string Enum2Description { get; set; }
}

Я думаю, что пользовательское средство форматирования является моим лучшим выбором, но я не могу выяснить, как добавить средство форматирования и указать который поле отобразиться от одновременно.

5
задан Seth Petry-Johnson 7 June 2010 в 23:47
поделиться

1 ответ

Ах, идиотский момент. Не осознавал, что могу комбинировать ForMember () и AddFormatter () следующим образом:

Mapper.CreateMap<SourceObject, DestinationObject>()
    .ForMember(x => x.Enum1Desc, opt => opt.MapFrom(x => x.EnumProp1))
    .ForMember(x => x.Enum1Desc, opt => opt.AddFormatter<EnumDescriptionFormatter>())
    .ForMember(x => x.Enum2Desc, opt => opt.MapFrom(x => x.EnumProp2))
    .ForMember(x => x.Enum2Desc, opt => opt.AddFormatter<EnumDescriptionFormatter>());

Проблема решена.

7
ответ дан 14 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: