Automapper: сопоставить Enum с его атрибутом [Description] - PullRequest
5 голосов
/ 08 июня 2010

У меня есть исходный объект, который выглядит следующим образом:

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; }
}

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

1 Ответ

7 голосов
/ 08 июня 2010

Argh, идиотский момент. Не понимал, что могу объединить 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>());

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...