Automapper映射(Automapper Mapping)

2019-09-01 12:27发布

我试图与映射像这样的属性名称的对象:

Property_One -> PropertyOne ... etc
Sample_Property -> SampleProperty

有没有更好的办法做到这一点,而不是每个单独的属性映射到另一个? 唯一的区别是下划线。

Answer 1:

你需要指定下划线源侧命名约定:

Mapper.Initialize(i => 
{
    i.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();
    i.CreateMap<Source, Dest>(); 
});

你可以这样做,在全球范围(如上图所示)或每个配置文件,如果只有部分源类型遵循这个命名约定。



Answer 2:

public class Source
{
    public string Property_One { get; set; }
}

public class Dest
{
    public string PropertyOne { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        Mapper.CreateMap<Source, Dest>()
            .ForMember(dest => dest.PropertyOne,
                       opt => opt.MapFrom(src => src.Property_One));

        var source = new Source
        {
            Property_One = "property1"
        };

        var destination = Mapper.Map<Source, Dest>(source);
        Console.WriteLine(destination.PropertyOne);
    }
}


文章来源: Automapper Mapping