自动映射器指定将一种属性类型映射到另一种属性类型的规则

本文关键字:类型 属性 映射 一种 另一种 规则 | 更新日期: 2023-09-27 18:32:32

我有一组业务对象,我需要将其保留为实体。 业务对象具有许多 TimeSpan 类型的属性。 我想将它们映射到我的实体上的长属性。

public class BusinessObject
    {
        public string Name { get; set; }
        public TimeSpan ProcessingTime { get; set; }
        public TimeSpan WaitTime { get; set; }
        public TimeSpan RecordTime { get; set; }
    }
    public class Entity
    {
        public string Name { get; set; }
        public long ProcessingTime { get; set; }
        public long WaitTime { get; set; }
        public long RecordTime { get; set; }
    }
    public void CreateMapping()
    {
        Mapper.CreateMap<BusinessObject, Entity>()
            .ForMember(e => e.ProcessingTime, opt => opt.MapFrom(src => src.ProcessingTime.TotalMilliseconds))
            .ForMember(e => e.WaitTime, opt => opt.MapFrom(src => src.WaitTime.TotalMilliseconds))
            .ForMember(e => e.RecordTime, opt => opt.MapFrom(src => src.RecordTime.TotalMilliseconds));
    }

有没有一种方法可以在映射中指定所有 Timespan 属性都应映射到该映射的 long,而不必写出每个属性?

自动映射器指定将一种属性类型映射到另一种属性类型的规则

看起来您可以覆盖为 TimeSpan 的类型实例化的TypeConverterhttps://github.com/AutoMapper/AutoMapper/blob/develop/src/AutoMapper/Mappers/TypeConverterMapper.cs