gpt4 book ai didi

c# - AutoMapper map 子属性也定义了 map

转载 作者:IT王子 更新时间:2023-10-29 03:50:20 26 4
gpt4 key购买 nike

我有以下域对象:

public class DomainClass
{
public int Id { get; set; }

public string A { get; set; }
public string B { get; set; }
}

我有以下两个要映射到的对象:

public class Parent 
{
public int Id { get; set; }
public string A { get; set; }

public Child Child { get; set; }
}

public class Child
{
public int Id { get; set; }
public string B { get; set; }
}

我设置了以下 map :

 Mapper.CreateMap<DomainClass, Parent>();
Mapper.CreateMap<DomainClass, Child>();

如果我使用以下调用映射我的对象,则 parent.Child 属性为空。

var domain = GetDomainObject();
var parent = Mapper.Map<DomainClass, Parent>(domain); // parent.Child is null

我知道我可以写出以下内容:

var domain = GetDomainObject();
var parent = Mapper.Map<DomainClass, Parent>(domain);
parent.Child = Mapper.Map<DomainClass, Child>(domain);

有没有一种方法可以消除第二次调用并让 AutoMapper 为我执行此操作?

最佳答案

您只需要在映射中指定:

Mapper.CreateMap<DomainClass, Child>();
Mapper.CreateMap<DomainClass, Parent>()
.ForMember(d => d.Id, opt => opt.MapFrom(s => s.Id))
.ForMember(d => d.A, opt => opt.MapFrom(s => s.A))
.ForMember(d => d.Child,
opt => opt.MapFrom(s => Mapper.Map<DomainClass, Child>(s)));

关于c# - AutoMapper map 子属性也定义了 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com