using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public static void Main()
MapperConfiguration _config = new MapperConfiguration(config =>
config.CreateMap<EntityClass, DestinationEnum>()
.ConvertUsing(src => Helpers.ConvertFromEntityClassToDestinationEnum(src));
IMapper mapper = _config.CreateMapper();
var entityClassObj = new EntityClass { IsExempt = true, IsOverdue = true, Status = SourceEnum.InProgress };
var result = mapper.Map<DestinationEnum>(entityClassObj);
Console.WriteLine(JsonConvert.SerializeObject(@result));
public bool IsExempt { get; set; }
public bool IsOverdue { get; set; }
public SourceEnum Status { get; set; }
public enum DestinationEnum
[Description("In Progress")]
[Description("Submitted")]
[Description("Conf. Pending")]
[Description("Complete")]
public class EntityClassToDestinationEnumConverter : ITypeConverter<EntityClass, DestinationEnum>
public DestinationEnum Convert(EntityClass src, DestinationEnum dest, ResolutionContext context)
return DestinationEnum.Exempt;
return DestinationEnum.Overdue;
case SourceEnum.InProgress:
return DestinationEnum.InProgress;
case SourceEnum.Complete:
return DestinationEnum.Completed;
case SourceEnum.AssessmentComplete:
return DestinationEnum.ConfirmationPending;
case SourceEnum.Submitted:
return DestinationEnum.Submitted;
return DestinationEnum.Unset;
return DestinationEnum.None;
public static class Helpers
public static DestinationEnum ConvertFromEntityClassToDestinationEnum(EntityClass src)
return DestinationEnum.Exempt;
return DestinationEnum.Overdue;
case SourceEnum.InProgress:
return DestinationEnum.InProgress;
case SourceEnum.Complete:
return DestinationEnum.Completed;
case SourceEnum.AssessmentComplete:
return DestinationEnum.ConfirmationPending;
case SourceEnum.Submitted:
return DestinationEnum.Submitted;
return DestinationEnum.Unset;
return DestinationEnum.None;