将容器映射到容器的自动映射器

Automapper to map Container to Containee

我对 Automapper 有点陌生,所以我可能会尝试将它用于一些不应该用于的事情,但就这样吧。我有两个 类 :

  public class Container
    {

        public int Id { get; set; }
        public string Code { get; set; }
        public string StrVal { get; set; }
        public DateTime Date { get; set; }
        public Containee Containee { get; set; }
    }  

  public class Containee
    {
        public int Id { get; set; }
        public decimal Value { get; set; }
        public string DifferentStr { get; set; }
        public DateTime birthday { get; set; }
    }

我有一个看起来像这样的 DTO :

  public class ContaineeDTO
    {
        public int Id { get; set; }
        public decimal Value { get; set; }
        public string DifferentStr { get; set; }
        public DateTime birthday { get; set; }
        public string Code { get; set; }
    }

我想做的是使用 Automapper 将我的 Container 映射到我的 ContaineeDTO。我觉得这应该使用解析器,尤其是将代码从 Container 传递到 Containee DTO,但我不确定如何继续,我们将不胜感激。

您可以将此配置放在 Startup.cs:

var config = new MapperConfiguration(
    cfg => cfg.CreateMap<Container, ContaineeDTO>()
   .ForMember(containeeDto => containeeDto.Value, opt => 
       opt.MapFrom(container => container.Containee.Value))
   .ForMember(containeeDto => containeeDto.DifferentStr, opt => 
       opt.MapFrom(container => container.Containee.DifferentStr))
   .ForMember(containeeDto => containeeDto.birthday, opt => 
       opt.MapFrom(container => container.Containee.birthday));

重要 注意:您在两个 类 中将属性命名为相同,因此没有必要在映射定义中提供它们的名称(如您所见,我没有'不要这样做)