C# 使用Project强制Automapper在所有日期时间上设置DateTimeKind.Utc

C# 使用Project强制Automapper在所有日期时间上设置DateTimeKind.Utc,c#,automapper,C#,Automapper,我正在寻找一种方法,在使用ProjectTo时,使用AutoMapper来指定所有日期上的DateTimeKind到Utc。我环顾四周,找到了一些解决方案,但似乎没有一个奏效: cfg.CreateMap<DateTime, DateTime>().ConvertUsing(i => DateTime.SpecifyKind(i, DateTimeKind.Utc)); cfg.CreateMap<DateTime?, DateTime?>().ConvertUsi

我正在寻找一种方法,在使用
ProjectTo
时,使用
AutoMapper
来指定所有日期上的
DateTimeKind
Utc
。我环顾四周,找到了一些解决方案,但似乎没有一个奏效:

cfg.CreateMap<DateTime, DateTime>().ConvertUsing(i => DateTime.SpecifyKind(i, DateTimeKind.Utc));
cfg.CreateMap<DateTime?, DateTime?>().ConvertUsing(i => DateTime.SpecifyKind(i.Value, DateTimeKind.Utc));
我是用错误的方法还是有更好的方法来实现这一点

cfg.CreateMap<DateTime, DateTime>().ProjectUsing(i => new DateTime(i.Year, i.Month, i.Day, i.Hour, i.Minute, i.Second, DateTimeKind.Utc));
cfg.CreateMap<DateTime?, DateTime?>().ProjectUsing(i => new DateTime(i.Value.Year, i.Value.Month, i.Value.Day, i.Value.Hour, i.Value.Minute, i.Value.Second, DateTimeKind.Utc));
cfg.CreateMap<DateTime, DateTime>().ConstructProjectionUsing(i => new DateTime(i.Year, i.Month, i.Day, i.Hour, i.Minute, i.Second, DateTimeKind.Utc));
cfg.CreateMap<DateTime?, DateTime?>().ConstructProjectionUsing(i => new DateTime(i.Value.Year, i.Value.Month, i.Value.Day, i.Value.Hour, i.Value.Minute, i.Value.Second, DateTimeKind.Utc));
cfg.ForAllPropertyMaps(map => (map.SourceType == typeof(DateTime?) || map.SourceType == typeof(DateTime)), (map, expression) =>
{
    expression.ResolveUsing(o =>
        {
            var date = o as DateTime;
            DateTime.SpecifyKind(date, DateTimeKind.Utc);
            return date;
        });
});