У меня странный случай, и я довольно новичок в AutoMapper, и я не могу понять, что происходит.
У меня есть два класса
public class Person
{
public List<Friend> Friends {get;set;}
}
public class PersonView : Person
{
public new List<FriendView> Friends {get;set;}
}
и карта
Mapper.CreateMap<Person, PersonView>().ForMember(d => d.Friends,
o => o.ResolveUsing<FriendViewResolver>().FromMember(s => s.Friends));
но у меня также есть эта карта, которая имеет свое отображение:
Mapper.CreateMap<Friend, FriendView>().ForMember(/* a lot of stuff */);
Теперь внутри FriendViewResolver - я звоню Mapper.Map<Friend, FriendView>()
каждому из друзей. Но по какой-то причине после запуска некоторые свойства теряются, и после перешагивания кода кажется, что AutoMapper делает второй проход по списку.
Я хочу, чтобы FriendViewResolver
выполнялся в списке, потому что он выполняет рекурсивные действия со всей коллекцией Friends
, но я не понимаю, почему AM делает второй проход, если есть правило решателя для член.
Я действительно надеюсь, что это имеет смысл.
РЕДАКТИРОВАТЬ: проблема возникает, когда я запускаю Mapper.Map<Person, PersonView>();
, я вижу, что он запускает FriendViewResolver
и имеет правильный результат, но следующий шаг в отладчике снова запускает карты и портит уже отображенные объекты.