Automapper - Быстрая настраиваемая карта - PullRequest
0 голосов
/ 14 июля 2020

Я хочу быстро сделать простое сопоставление из DateTime src в DateTime? dest, так что если src == DateTime.MinValue будет установлено dest = null.

Есть ли быстрый и простой способ сделать это не требует создания нового преобразователя сопоставлений?

Достаточно ли этого сделать /*other stuff*/.ForMember(d=>d.dest, opt=>opt.MapFrom(s=>(s.src == DateTime.MinValue)?null:s.src);

Edit

Приведенный выше оператор дает error

"Тип условного выражения не может быть определен, потому что не существует неявного преобразования между '' и 'DateTime'."

Но когда я привожу оба вывода условного оператора к типу DateTime? это избавляет от ошибки. Новый оператор становится /*other stuff*/.ForMember(d => d.dest, opt => opt.MapFrom(s => (s.src == DateTime.MinValue) ? (DateTime?)null : (DateTime?)s.src);

Edit 2

Здесь урезанная версия фактических классов.

public class Foo{
    ...
    public DateTime TimeIssued { get; set;}
    ...
}

public class FooViewModel{
    ...
    public DateTime? TimeIssued { get; set;}
    ...
    public static List<FooViewModel> From(List<Foo> foos){
        return Mapper.Map<List<FooViewModel>>(foos);
    }
}

/*elsewhere, in the automapper configuration file*/

Mapper.CreatMap<Foo, FooViewModel>()
    .ForMember(dest => dest.TimeIssued, opt => opt.MapFrom(src => (src.TimeIssued == DateTime.MinValue) ? (DateTime?)null : (DateTime?) src.TimeIssued));

Я бы хотел FooViewModel.TimeIssued будет null, когда переданное Foo.TimeIssued будет DateTime.MinValue.

...