Насколько я понимаю, я могу настроить AutoMapper следующим образом, и при отображении он должен форматировать все даты исходной модели в соответствии с правилами, определенными в IValueFormatter, и устанавливать результат в сопоставленной модели.
ForSourceType<DateTime>().AddFormatter<StandardDateFormatter>();
ForSourceType<DateTime?>().AddFormatter<StandardDateFormatter>();
Я не получаю эффекта для своего отображенного класса с этим. Это работает только тогда, когда я делаю следующее:
Mapper.CreateMap<Member, MemberForm>().ForMember(x => x.DateOfBirth, y => y.AddFormatter<StandardDateFormatter>());
Я сопоставляю DateTime? Member.DateOfBirth до string MemberForm.DateOfBirth . Форматировщик в основном создает короткую строку даты из даты.
Что-то мне не хватает при установке стандартного форматера для данного типа?
Спасибо
public class StandardDateFormatter : IValueFormatter
{
public string FormatValue(ResolutionContext context)
{
if (context.SourceValue == null)
return null;
if (!(context.SourceValue is DateTime))
return context.SourceValue.ToNullSafeString();
return ((DateTime)context.SourceValue).ToShortDateString();
}
}