开发者

Automapper: Map an Enum to its [Description] attribute

I have a source object that looks like this:

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

The enums are decorated with a custom [Description] attribute that provides a string representation, and I have an extension method .GetDescription() that returns it. How do I map these enum properties using that extension?

I'm trying to map to an object like this:

private class DestinationObject {
    public string Enum1Description { get; set; }
    public string Enum2Description { get; set; }
}
开发者_运维知识库

I think a custom formatter is my best bet, but I can't figure out how to add the formatter and specify which field to map from at the same time.


Argh, idiot moment. Didn't realize I could combine ForMember() and AddFormatter() like this:

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>());

Problem solved.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜