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

时间:2017-11-08 15:53:58

标签: c# automapper

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

我尝试了ForMember,但它只适用于源到目的地。

那么如何将类IpPort中类型为string的B属性映射到类IpPort中类型为int的属性A

A类和B类映射如下:

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

1 个答案:

答案 0 :(得分:0)

正如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
        })