自动映射从一个对象到嵌套对象的映射
使用Automapper 2.0映射内部对象的最佳方法是什么?
-
使用此问题中的解决方案(Automapper 1.0)
-
创建自定义值解析器
-
?
public class DTOObject { // MainObject public int Id { get; set; } public string Name { get; set; } // SubObject (TopObject) public string TopText { get; set; } public string TopFont { get; set; } // SubObject (BottomObject) public string BottomText { get; set; } public string BottomFont { get; set; } } public class MainObject { public int Id { get; set; } public string Name { get; set; } public SubObject TopObject { get; set; } public SubObject BottomObject { get; set; } } public class SubObject { public string SubPropText { get; set; } public string SubPropFont { get; set; } }
自定义值解析器
public class CustomResolver : ValueResolver { protected override SubObject ResolveCore(DTOObject source) { return Mapper.Map(source); } }
对我来说,可以只使用MapFrom(没有ResolveUsing,这使你有机会使用这个映射与IQueryable扩展)。 因此,您将在Automapper配置中获得以下内容:
Mapper.CreateMap() .ForMember(dest => dest.SubPropText, opt => opt.MapFrom(x => x.BottomText)) .ForMember(dest => dest.SubPropFont, opt => opt.MapFrom(x => x.BottomFont)); Mapper.CreateMap() .ForMember(dest => dest.SubPart, opt => opt.MapFrom(x => x));
我最终为来自DTOObject
的MainObject
任何SubObjects创建了自己的值解析器。
public class PartResolver : ValueResolver { protected override T ResolveCore(DTOObject source) { return Mapper.Map (source); } }
然后在我的DTOObject
配置中,我创建一个从DTOObject
到SubObject
映射,并使用ValueResolver将该对象映射到MainObject
Mapper.CreateMap(); Mapper.CreateMap() .ForMember(dest => dest.SubPart, opt => opt.ResolveUsing>());
- 哪个更快:Automapper,Valuinjector还是手动映射? 每个人的速度到什么程度?
- Automapper说Mapper.Map是过时的全局映射?
- 在MVC3应用程序的Edit操作方法中使用AutoMapper
- 如何在ASP.Net webapp中引用的项目DLL中初始化AutoMapper配置文件
- AutoMapper地图中foreach中的额外迭代
- AutoMapper:PreserveReferences和MaxDepth有什么区别?
- 自动映射:将JSON转换为对象列表
- 如何在一个MVC应用程序中完全结合EntityFramework,Repository,UnitOfWork和Automapper?
- 使用AutoMapper,“相同类型的实体已经具有相同的主键值”错误