我正在尝试在两个对象列表之间进行映射。源类型具有 type 的复杂属性A
;目标类型是类型的扁平子集A
加上源类型中的附加标量属性。
public class A
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Source
{
public A MyA { get; set; }
public int SomeOtherValue { get; set; }
}
public class Destination
{
public string Name { get; set; }
public int SomeOtherValue { get; set; }
}
如果不清楚,我想Source.MyA.Name
映射到Destination.Name
和Source.SomeOtherValue
映射到Destination.SomeOtherValue
.
实际上,typeA
有十几个属性,其中 80% 映射到Destination
. 如果我像这样明确地拼出映射,我可以让事情正常工作CreateMap
:
CreateMap<Source, Destination>()
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MyA.Name));
这里的缺点是我想避免必须为每个需要复制到的属性添加ForMember
一行。我希望我可以做类似的事情:A
Destination
CreateMap<Source, Destination>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.MyA));
但是,如果我尝试上述操作,则在注册映射时会出现运行时错误:“成员的自定义配置仅支持类型上的顶级个人成员。”
谢谢