将属性映射到集合项
我一直在筛选AutoMapper文档,试图找到一个推荐的解决方案,但一直无法找到它。
假设我有类似以下的课程
public class Foo { public string Note { get; set; } }
此类从客户端填充并映射到以下域对象类
public class Bar { public IList Notes { get; set; } }
注意的地方
public class Note { public string Text { get; set; } // other properties excluded for brevity }
我想在Foo
上映射Note
字符串属性,首先映射到新的Note
实例上的Text
属性,然后将该Note
添加到Bar
上的Notes
集合中。 我正在使用ValueResolver
来执行此操作的第一部分(将字符串映射到Note
的新实例),但我不确定如何处理第二部分(将该项目映射到集合中的项目)。
这样做最干净的方法是什么?
我认为这样的事情应该有用(没有经过测试 – 只是大声打字):
Mapper.CreateMap().ForMember(d => d.Notes, opt => opt.MapFrom(s => new List { new Note { Text = s.Note } });
编辑
您还可以使用AutoMappers AfterMap
function。 这个lambda将在Automapper完成常规映射后执行:
.AfterMap((s,d) => d.Notes.Add(new Note { Text = s.Note }));