自定义将属性从目标映射到源和反向映射



为了保存对数据库的更改,我正在使用Automapper将字符串类型的属性从destination映射到source中int类型的属性。

我已经尝试过ForMember但它仅适用于源到目标。

那么如何将类 B 中名为 IpPort 类型的字符串属性映射到类 A 中名为 int 类型的IpPort属性。

类 A 和 B 的映射如下所示:

cf.CreateMap<classA, classB>().ReverseMap();

正如AutoMapper主站点所说,您可以使用ForPath自定义反向地图。

因此,您可以使用如下所示ForPath

 CreateMap<ClassA, ClassB>()
    .ForMember(d => dest.IpPort , opt => opt.MapFrom(src => int.Parse(src.IpPort )));
    .ReverseMap()
    .ForPath(s => s.IntPort, opt => opt.MapFrom(src => src.IntPort.ToString()));

或者您可以使用AferMap并检查源类型和目标类型,例如

AutoMapper.CreateMap<ClassA, ClassB>().ReverseMap().AfterMap((source, destination) =>
        {
            object ob = (object)source;
           string type= ob.GetType().ToString();
            if(type == "ClassA")
                //Do something
             else
                //Do something
        })

最新更新