automapper - как преобразовать enum в простой объект универсальным способом - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужно глобально обрабатывать преобразование из enum в простой тип и наоборот.

Например, с одной стороны, я получил

public class Domain 
{ 
    public SimpleTypes Type { get; set; } 
} 

с другой стороны, я получил

public class Storage 
{ 
    public int TypeId { get; set; } 
    public SimpleType Type { get; set; }
}

Во многих случаях SimpleType - очень простой объект

public class SimpleType
{
    public int Id { get; set; } 
    public string Name { set; set; }
}

Так что использование enum SimpleTypes имеет смысл

public enum SimpleTypes
{
    None = 0,
    TypeA = 1,
    TypeB = 2
}

Следующие сопоставления работают в обоих направлениях

cfg.CreateMap<SimpleTypes, SimpleType>()
    .ForMember(
        d => d.Id,
        opts => opts.MapFrom(s => (int)s))
    .ForMember(
        d => d.Name,
        opts => opts.MapFrom(s => s.ToString()))
    .ReverseMap();
cfg.CreateMap<Domain, Storage>()
    .ForMember(
        d => d.TypeId,
        opts => opts.MapFrom(s => s.Type))
    .ReverseMap();

У меня есть много подобных случаев в моем приложении.

Итак, как обрабатывать это преобразование в общем?

...