自动映射

时间:2009-10-27 10:49:36

标签: .net automapper

我正在尝试使用如下属性名称映射对象:

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

有没有比将每个属性单独映射到另一个属性更好的方法呢?唯一的区别是下划线。

2 个答案:

答案 0 :(得分:5)

您需要在源端指定下划线命名约定:

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

如果只有部分源类型遵循此命名约定,则可以全局(如上所示)或按个人资料执行此操作。

答案 1 :(得分:0)

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);
    }
}