AutoMapper : Как игнорировать дочерний объект дочернего объекта при отображении с помощью AutoMapper в c#

#c# #automapper

Вопрос:

У меня ниже классовая структура

     public class Parent
    {
        public int ParentID { get; set; }
        public string ParentName { get; set; }
        public Child Child { get; set; }
    }

    public class ParentMap
    {
        public int ParentID { get; set; }
        public string ParentName { get; set; }
        public Child Child { get; set; }
    }

    public class Child
    {
        public int ChildID { get; set; }
        public string ChildName { get; set; }
        public InnerChild InnerChild { get; set; }
    }

    public class InnerChild
    {
        public int InnerChildID { get; set; }
        public string InnerChildName { get; set; }
        public Parent Parent { get; set; }
    }

 

Я хочу сопоставить Parent класс с ParentMap классом. После сопоставления мне нужен Parent Child объект. Но мне не нужен Parent Child.InnerChild объект(его можно установить null ).
Я уже пробовал, ForPath() как показано ниже. Но это остановит отображение всего Child объекта.

 CreateMap<Parent, ParentMap>()
  .ForPath(o => o.Child.InnerChild, opt => opt.Ignore());
 

Может ли кто-нибудь сказать мне, как мне решить эту проблему.

Ответ №1:

Это один из быстрых способов решить вашу проблему

 CreateMap<Parent, ParentMap>()
    .AfterMap((src, dst) =>
    {
        dst.Child.InnerChild = null;
    });
 

Комментарии:

1. Спасибо @Oignon_Rouge. Это работает 🙂