繁体   English   中英

使用AutoMapper的基类属性的自定义映射

[英]Custom map for base class' property using AutoMapper

我有以下型号:

public class BaseEntity
{
    public DateTime CreatedDate { get; set; }
    public DateTime ModifiedDate { get; set; }
}

public class Child1 : BaseEntity { }

public class Child2 : BaseEntity { }

日期以UTC格式写入我的数据库中,但是当我将其拉出到视图模型中时,我希望日期以本地时间显示。 所以这就是我尝试的:

Mapper.CreateMap<BaseEntity, BaseViewModel>()
    .ForMember(e => e.CreatedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.CreatedDate)))
    .ForMember(e => e.ModifiedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.ModifiedDate)));

这是行不通的。 仅当我为子类显式创建映射时,它才起作用,就像这样,我认为这样做是不合理的:

Mapper.CreateMap<Child1, Child1ViewModel>()
    .ForMember(e => e.CreatedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.CreatedDate)))
    .ForMember(e => e.ModifiedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.ModifiedDate)));

我进行了一些搜索,但是没有找到似乎可以在基类上处理自定义映射的解决方案。

提前致谢。

这样的显示逻辑应在您的视图中完成,而不是在视图模型中完成。 将视图模型保留为DateTime,然后根据您的视图技术,创建模板化的帮助器或HtmlHelper扩展,以标准化日期的显示方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM