Обработка нескольких форматов даты в Automapper - PullRequest
0 голосов
/ 04 марта 2020

Например, предположим, что у нас есть тип источника:

public class Source
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }
    public string Value3 { get; set; }
}

И мы хотели бы сопоставить его с:

public class Destination
{
    public DateTime Value1 { get; set; }
    public DateTime Value2 { get; set; }
    public DateTime Value3 { get; set; }
}

Каждое значение конвертируется с использованием другого формата даты .

CreateMap<string, DateTime>().ConvertUsing(new DateTimeConverter1());
CreateMap<string, DateTime>().ConvertUsing(new DateTimeConverter2());
CreateMap<string, DateTime>().ConvertUsing(new DateTimeConverter3());

CreateMap<DateTime, string>().ConvertUsing(dt => dt.ToString(DateStringAttribute.DateFormatString1));
CreateMap<DateTime, string>().ConvertUsing(dt => dt.ToString(DateStringAttribute.DateFormatString2));
CreateMap<DateTime, string>().ConvertUsing(dt => dt.ToString(DateStringAttribute.DateFormatString3));

Как я могу получить правильный используемый формат (в обоих направлениях), когда я могу указать только строку и DateTime? Могу ли я как-то получить доступ к имени свойства, чтобы выбрать подходящий формат преобразования?

1 Ответ

0 голосов
/ 17 марта 2020

Я не знаю, является ли это лучшим способом сделать это, но, похоже, это сработало.

CreateMap<Destination, Source>()
.ForMember(dest => dest.Value1, opt => opt.MapFrom(src =>src.Value1.HasValue?src.Value1.Value.ToString(DateStringAttribute.DateFormat1):""))
.ForMember(dest => dest.Value2, opt => opt.MapFrom(src =>src.Value2.HasValue?src.Value2.Value.ToString(DateStringAttribute.DateFormat2):""))
.ForMember(dest => dest.Value3, opt => opt.MapFrom(src =>src.Value3.HasValue?src.Value3.Value.ToString(DateStringAttribute.DateFormat3):""))
.ReverseMap();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...