Гро*_*ный 6 .net c# automapper
假设我有2个具有相同属性集的类:
public class MyDto
{
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
}
public class MyViewModel
{
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想使用AutoMapper进行映射,将输入类的UTC日期调整为输出类的本地时间,例如,授予我在UK,其中UTC偏移当前为1h:
var input = new MyDto {Id = 1, CreatedOn = DateTime.Parse("01-01-2015 14:30")};
var output = Mapper.Map<MyViewModel>(input); // output.CreatedOn = "01-01-2015 15:30"
Run Code Online (Sandbox Code Playgroud)
我可以自动为所有DateTime属性配置AutoMapper 吗?
NB调整我使用的时间 DateTime.SpecifyKind(value, DateTimeKind.Utc)
您可以创建自定义类型转换器:
public class CustomDateTimeConverter : ITypeConverter<DateTime, DateTime> {
public DateTime Convert(ResolutionContext context) {
var inputDate = (DateTime) context.SourceValue;
var timeInUtc = DateTime.SpecifyKind(inputDate, DateTimeKind.Utc);
return TimeZoneInfo.ConvertTime(timeInUtc, TimeZoneInfo.Local);
}
}
Run Code Online (Sandbox Code Playgroud)
这将使 AutoMapper 对两个DateTime属性之间的每个映射执行从 UTC 到本地时间的转换。