Phil
Phil

Reputation: 4224

Generic Enum to Lowercased String Mapping Using AutoMapper

I currently map all of my differnt enum value types to a lower cased string value. I have multiple maps that contain duplicate logic in them. Is there away to take the following AutoMapper code and tell it to always convert enums to lowercased string values?

Mapper.CreateMap<Class1, OutClass1>()
   .ForMember(dest => dest.Enum1String, opt => opt.MapFrom(src => src.Enum1.ToString().ToLower()))
   .ForMember(dest => dest.Enum2String, opt => opt.MapFrom(src => src.Enum2.ToString().ToLower()));

Mapper.CreateMap<Class2, OutClass2>()
   .ForMember(dest => dest.Enum2String, opt => opt.MapFrom(src => src.Enum2.ToString().ToLower()));

Upvotes: 6

Views: 2395

Answers (1)

PatrickSteele
PatrickSteele

Reputation: 14687

Use a custom type converter that tells Automapper how enums should be converted to strings:

Mapper.CreateMap<Enum, String>().ConvertUsing(e => e.ToString().ToLower());

Upvotes: 7

Related Questions