自动映射:部分映射

use*_*411 14 automapper

我使用Automapper将数据从objectA传输到objectB

classe ObjectA
{
   string Title;
   string Summary;
}

classe ObjectB
{
   string Title;
   string Summary;
   IAddress Address;
}
Run Code Online (Sandbox Code Playgroud)

我在两个对象之间创建了这种映射

AutoMapper.Mapper.CreateMap<IObectA, IObjectB>()
      .ForMember(dest => dest.Title,           src => src.MapFrom(s => s.Title))
      .ForMember(dest => dest.Summary,         src => src.MapFrom(s => s.Summary))
      .ForMember(dest => dest.Address,         src => src.Ignore())
Run Code Online (Sandbox Code Playgroud)

我创建我的ObjectB并填充其所有属性,包括地址

当我调用mapper时,我希望它覆盖Title和Summary并忽略Address

ObjectB = Mapper.Map<IObjectA, IObjectB>(objectA); 
Run Code Online (Sandbox Code Playgroud)

实际上,它是地址的抛出和异常.

我究竟做错了什么?

[更新] 为了表达不同,我有我的objectB,我想用来自ObjectA的数据更新它的一部分.当我说Ignore时,我的意思是以他们已经存在的方式保留数据

use*_*411 34

我找到了解决方案.

我刚刚发现Map方法有一个超出预先实例化的目标对象的重载版本.感谢这篇文章

Mapper.Map<IObjectA, IObjectB>(objectA, ObjectB ); 
Run Code Online (Sandbox Code Playgroud)

@JoDG,谢谢你的帮助

  • 链接的文章不再存在...... :( (3认同)
  • 就像一个注释,你不应该在<> Mapper.Map(objectA,ObjectB)中指定类型; 应该够了 (3认同)
  • @noocyte:Archive.org有你的背!http://web.archive.org/web/20130124102758/http://www.dominicpettifer.co.uk/Blog/45/automapper---a-custom-type-converter-that-exposes-a-destination-值 (2认同)