AutoMapper:如何获取目标属性的名称

时间:2016-04-06 16:16:38

标签: c# automapper automapper-4

如何获取目标属性的名称:

Public class Source{
    public string FirstName{ get; set; }
}

public class Destination{
    public string C_First_Name{ get; set; }
}

使用AutoMapper,当我传递源属性Name时,如何获取目标属性的名称。

1 个答案:

答案 0 :(得分:5)

对于某些地图配置:

var mapper = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Source, Destination>().ForMember(dst => dst.C_First_Name, opt => opt.MapFrom(src => src.FirstName));
});

您可以定义这样的方法:

public string GetDestinationPropertyFor<TSrc, TDst>(MapperConfiguration mapper, string sourceProperty)
{
    var map = mapper.FindTypeMapFor<TSrc, TDst>();
    var propertyMap = map.GetPropertyMaps().First(pm => pm.SourceMember == typeof(TSrc).GetProperty(sourceProperty));

    return propertyMap.DestinationProperty.Name;
}

然后像这样使用它:

var destinationName = GetDestinationPropertyFor<Source, Destination>(mapper, "FirstName");