在使用AutoMapper进行对象映射时,这个异常通常是由映射配置不正确引起的。具体地,这个异常是因为Mapper.CreateMap方法中指定的路径没有到达目标类型的顶级成员。 例如,在以下例子中:
//定义目标类型 public class Destination { public int Id { get; set; } public string Name { get; set; } public Detail Details { get; set; } }
public class Detail { public string Address { get; set; } public string Phone { get; set; } }
//定义源类型 public class Source { public int Id { get; set; } public string Name { get; set; } public string Address { get; set; } public string Phone { get; set; } }
当你尝试执行以下代码时:
Mapper.CreateMap
//执行映射
var dest = Mapper.Map
你将会得到一个Automapper异常:必须解析到顶级成员
这是因为在映射配置中指定了Details.Address和Details.Phone路径,但Details属性本身并没有被映射。
解决这个问题的方法是在映射配置中将Details属性映射到目标类型的顶级成员,如下所示:
Mapper.CreateMap
//执行映射
var dest = Mapper.Map
这样就可以成功执行映射了。