我试图用多级成员映射对象:这些是类:
public class Father
{
public int Id { get; set; }
public Son Son { get; set; }
}
public class FatherModel
{
public int Id { get; set; }
public int SonId { get; set; }
}
public class Son
{
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试自动化它的方式:
AutoMapper.Mapper.CreateMap<FatherModel , Father>()
.ForMember(dest => dest.Son.Id, opt => opt.MapFrom(src => src.SonId));
Run Code Online (Sandbox Code Playgroud)
这是我得到的例外:
表达式'dest => Convert(dest.Son.Id)'必须解析为顶级成员而不是任何子对象的属性.请在子类型或AfterMap选项上使用自定义解析程序.参数名称:lambdaExpression
谢谢
All*_*est 36
这将适用于映射到新对象或现有对象.
Mapper.CreateMap<FatherModel, Father>()
.ForMember(x => x.Son, opt => opt.MapFrom(model => model));
Mapper.CreateMap<FatherModel, Son>()
.ForMember(x => x.Id, opt => opt.MapFrom(model => model.SonId));
Run Code Online (Sandbox Code Playgroud)
Max*_*xim 17
AutoMapper.Mapper.CreateMap<FatherModel, Father>()
.ForMember(x => x.Son, opt => opt.ResolveUsing(model => new Son() {Id = model.SonId}));
Run Code Online (Sandbox Code Playgroud)
如果它变得越来越复杂,你可以写一个ValueResolver类,参见这里的例子 - http://automapper.codeplex.com/wikipage?title=Custom%20Value%20Resolvers
| 归档时间: |
|
| 查看次数: |
27016 次 |
| 最近记录: |