Automapper-将UTC转换为特定时区

问题描述 投票:0回答:1

我具有以下内容,当将DateUtc从源代码转换为目标Date时,我想应用转换。现在,我编写的以下转换器将在特定字段中工作,因为已指定该字段。

我希望转换器能够比SourceDto1DestDto1(例如SourceDto2DestDto2)更灵活地传递其他对象,>

public class SourceDto1
{
   public DateTime DateUtc {get;set;}
}
public class DestDto1
{
   public DateTime Date {get;set;}
}
public class SourceDto2
{
   public DateTime DateUtc {get;set;}
}
public class DestDto2
{
   public DateTime Date {get;set;}
}

转换器

public class AttachmentCreatedDateResolver : IValueResolver<SourceDto1, DestDto1 DateTime>
    {

        private readonly Settings _settings;
        public AttachmentCreatedDateResolver(Settings settings)
        {
            _settings = settings;
        }


        public DateTime Resolve(SourceDto1 source, DestDto1 destination, DateTime destMember, ResolutionContext context)
        {
            TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo(_settings.TimeZone);
            var converted = TimeZoneInfo.ConvertTimeFromUtc(source.DateUtc, tzi);
            return converted;
        }
    }

我想我不想为我需要在属性之间转换日期的每对对象创建一个不同的解析器类。

ITypeConverter可能有用,但我不确定如何从DI中注入我的Settings

我具有以下内容,当将DateUtc从源转换为目标日期时,我想应用转换。现在,我写的以下转换器将在特定的领域工作,因为那是...

c# automapper
1个回答
0
投票

您可以为此创建IMemberValueResolver的实现:

© www.soinside.com 2019 - 2024. All rights reserved.