自动映射器 - 将列表映射到哈希集



我想将我的 DTO 映射到一个实体。两者之间的唯一区别是我的dto使用List作为集合类型,而实体使用HashSet。如何将自动映射器配置为在遇到 ICollec 时自动映射到哈希集?目前,它只是将实体中的哈希集替换为列表。

示例类和映射:

cfg.CreateMap<MachineDto, Machine>(MemberList.Source)
cfg.CreateMap<Machine, MachineDto>(MemberList.Destination)
public class Machine
{
public Machine()
{
Segment = new HashSet<Segment>();
}
public long ID { get; set; }    
public string Name { get; set; }            
public ICollection<Segment> Segment { get; set; }
}

public class Segment
{
public Segment()
{        
}
public long ID { get; set; }
public long MachineID { get; set; }
public string Serial { get; set; }
}

public class MachineDto
{
public MachineDto()
{
Segment = new List<SegmentDto>();
}
public long ID { get; set; }    
public string Name { get; set; }            
public ICollection<SegmentDto> Segment { get; set; }
}

public class SegmentDto
{
public SegmentDto()
{        
}
public long ID { get; set; }
public string Serial { get; set; }
}

在对AfterMap(( 进行了大量摆弄之后,我找到了 UseDestinationValue 选项,当定义时,它将重用现有的 HashSet 而不是用 List 替换 ICollection。

cfg.CreateMap<MachineDto, Machine>(MemberList.Source)
.ForMember(dest => dest.Segment, opt => opt.UseDestinationValue());

最新更新