我有以下课程:
public class Parent {
string id;
Child child;
}
public class Child {
string Name;
}
基本上我想做一个Automapper配置,允许我将Parent映射到Child。我怎么能这样做?
var parent = GetParent();
var child = Mapper.Map<Child>(parent);
是否有可用的方法,而无需使用
逐个映射成员.ForMember(d=> d.Name, o=> o.MapFrom(src => src.child.Name));
原因:
1)孩子中有多个成员并且创建多个.ForMembers()似乎很乱。
2)使用Mapper.Map()代替直接访问对象,因为这是使用映射配置的父通用提供程序类。
答案 0 :(得分:1)
在提供的简单案例中,
You rolled 4
You rolled 4
You rolled 1
You rolled 1
You rolled 6
You rolled 6
应该完成你在这里尝试做的事情。
示例代码如下 - 我在孩子身上加了一个ID来验证只有来自Parent.Child的字段会映射到新孩子。
请注意,这不会与.MapFrom()结合使用 - 所以如果您在孩子身上有一个ParentId属性,那么您需要做一些额外的手动映射,以便从父级到子级
关于多个.ForMember()看似凌乱 - 同意如果你有大量的映射可能会堆积,但根据我的经验,它可以有利于防止重命名重构破坏你的映射。强烈建议使用configuration validation单元测试来确保此类重构不会破坏您的映射。希望有所帮助!
.ProjectUsing(x => x.Child)