AutoMapper не игнорирует вложенные типы - PullRequest
1 голос
/ 25 августа 2011

У меня есть ситуация, когда AutoMapper не работает должным образом с игнорированием членов.Вот структура класса и сопоставления.

public class Class1 {
      public Class2 Class2 { get; set; }
}

public class Class2 {
     public List<Class3> class3List { get; set; }
}

Mapper.CreateMap<Class1, Class1>();
Mapper.CreateMap<Class2, Class2>
    .ForMember(dest => dest.class3List, opt => opt.Ignore());
Mapper.CreateMap<Class3, Class3>();

И когда я сопоставляю Class1 с Class1

Mapper.Map<Class1, Class1>(object1, object2);

В объекте 2 class3List пуст, но до сопоставления у него были элементы.Если я сделаю сопоставление следующим образом.

Mapper.CreateMap<Class1, Class1>();
    .ForMember(dest => dest.Class2, opt => opt.Ignore());
Mapper.CreateMap<Class2, Class2>();
Mapper.CreateMap<Class3, Class3>();

Он игнорирует свойство Class2, как и должно.Так как я могу игнорировать class3List и не очищать его при отображении Class1 в Class1?

1 Ответ

1 голос
/ 02 сентября 2011

Обычно отображение выполняется из класса одного типа в класс другого типа. Чего ты здесь пытаешься достичь? Клон?

Глядя на API, я думаю, что лучше использовать UseDestinationValue (), а не Ignore. Я проверил его с вашим кодом, хотя, похоже, он все еще не работал.

 Mapper.CreateMap<ParentFoo, ParentBar>()
     .ForMember(b => b.Child, o => o.UseDestinationValue());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...