开发者

Automapper: Map an Enum to its [Description] attribute

开发者 https://www.devze.com 2023-01-03 03:44 出处:网络
I have a source object that looks like this: private class SourceObject { public Enum1 EnumProp1 { get; set; }

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

精彩评论

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