将多个对象自动化到一个对象

6 c# automapper

我有两个子类,我需要将List元素复制到主对象

public Class Foo1 : Anote
{
  public bool Ison { get; set;}
  public List<Anote>Anotes { get; private set;}

  public Foo1()
  {
    this.Anotes = new List<Anote>();
  }
}

public Class Foo2 : Bnote
{
  public bool Ison { get; set;}
  public List<Bnote>Anotes { get; private set;}

  public Foo2()
  {
    this.Anotes = new List<Bnote>();
  }
}

public Class Foo3 : Cnote
{
   public bool Ison { get; set;}
   public List<Cnote>Anotes { get; private set;}
   public List<Cnote>Bnotes { get; private set; }

}
Run Code Online (Sandbox Code Playgroud)

我将从数据库中检索数据并将此数据放入Foo1和Foo2.然后,我需要将Foo1和Foo2中的List数据映射到Foo3中的List元素.

我已经做好了

Foo1A foo1a = new Foo1A();
Foo2A foo2a = new Foo2A();

Mapper.CreateMap<Foo1, Foo1A>();
Mapper.CreateMap<Foo2, Foo2A>();
Mapper.Map<Foo1, Foo2A>(foo1, foo1a);
Mapper.Map<Foo2, Foo2A>(foo2, foo2a);
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我需要做的是

将Foo1中的List Anotes映射到Foo3中的List Anotes将Foo2中的List Anotes映射到Foo3中的List Bnotes.

And*_*ker 9

你应该能够做到:

Mapper.CreateMap<ANote, CNote>();

Mapper.CreateMap<Foo1, Foo3>()
    .ForMember(dest => dest.ANotes, opt => opt.MapFrom(src => src.ANotes))
    .ForMember(dest => dest.BNotes, opt => opt.Ignore());

Mapper.CreateMap<Foo2, Foo3>()
    .ForMember(dest => dest.BNotes, opt => opt.MapFrom(src => src.ANotes))
    .ForMember(dest => dest.ANotes, opt => opt.Ignore());

Foo3 foo3 = new Foo3();

Mapper.Map<Foo1, Foo3>(foo, foo3);
Mapper.Map<Foo2, Foo3>(foo2, foo3);
Run Code Online (Sandbox Code Playgroud)

foo3.ANotes并且foo3.BNotes两者都应该正确映射.