且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

自动映射器枚举描述属性

更新时间:2022-02-24 23:08:33

执行此操作的两种方法:

Two ways to do this:

  1. ResolveUsing内联:

    Mapper.CreateMap<Result, Incident>()
        .ForMember(
            dest => dest.Status,
            opt => opt.ResolveUsing(src =>
            {
                var value = (ResolveCodeEnum)Enum.Parse(
                                typeof(ResolveCodeEnum), src.state);

                return EnumHelper.GetEnumDescription(value);
            }));

  • 带有自定义的ValueResolver:

    public class EnumValueResolver : ValueResolver<Result, string>
    {
        protected override string ResolveCore(Result src)
        {
            var value = (ResolveCodeEnum)Enum.Parse(typeof(ResolveCodeEnum), src.state);
    
            return EnumHelper.GetEnumDescription(value);    
        }
    }
    

    用法:

    Mapper.CreateMap<Result, Incident>()
        .ForMember(
            dest => dest.Status,
            opt => opt.ResolveUsing<EnumValueResolver>());
    

  • 我建议#2,因为它更干净.

    I'd recommend #2 since it's much cleaner.