Я хочу быстро сделать простое сопоставление из 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
.