自动映射器 - 使用集合映射对象

Usm*_*auf 2 c# automapper

使用Auto Mapper,我需要映射以下类的对象

public class RemoteClass
{
    public IEnumerable<RemoteDetails> collection{get; set;};

    public int RemoteFieldA{get; set;}

    public int RemoteFieldB{get; set;}      
}


public class LocalClass
{
    public IEnumerable<LocalDetails> collection{get; set;};

    public int LocalFieldA{get; set;}

    public int LocalFieldB{get; set;}       
}
Run Code Online (Sandbox Code Playgroud)

我的配置和映射应该是什么?

Ser*_*kiy 7

只需定义RemoteDetails和之间的映射LocalDetails.AutoMapper足够聪明,可以处理他知道如何映射的类型集合.假设这两个类有字段C:

Mapper.CreateMap<RemoteDetails, LocalDetails>()
      .ForMember(ld => ld.LocalFieldC, opt => opt.MapFrom(rd => rd.RemoteFieldC));

Mapper.CreateMap<RemoteClass, LocalClass>()
      .ForMember(lc => lc.LocalFieldA, opt => opt.MapFrom(rc => rc.RemoteFieldA))
      .ForMember(lc => lc.LocalFieldB, opt => opt.MapFrom(rc => rc.RemoteFieldB));
Run Code Online (Sandbox Code Playgroud)

使用这些映射,您可以从RemoteClass映射到LocalClass:

RemoteClass remote = new RemoteClass {
    RemoteFieldA = 42,
    RemoteFieldB = 100,
    collection = new [] { 
        new RemoteDetails { RemoteFieldC = "Foo" },
        new RemoteDetails { RemoteFieldC = "Bar" }
    }
};

var local = Mapper.Map<LocalClass>(remote);
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述