Мне нужна ваша помощь. У меня есть базовый опыт работы с automapper, и все это отлично работает, но так или иначе я не могу сопоставить свое следующее изменение исходного объекта с моим целевым объектом.
Позвольте мне немного объяснить это:
В IUser я добавил свойство "UserDetails", и этот класс содержит свойство List of Guid под названием "Domains".
Я хочу сопоставить это свойство списка второго уровня с моим объектом UserDto, где список свойств guid находится на первом уровне. В приведенном ниже примере сопоставление ключей пользователя работает нормально, но я продолжаю получать значение null для «DomainIds» и не вижу, что я делаю неправильно. Я надеюсь, что вы можете помочь мне
public interface IUser
{
UserKey Key { get; }
UserDetails Details { get; set; }
FirstName { get; }
}
public struct UserKey
{
private readonly Guid _id;
public UserKey(Guid id)
{
_id = id;
}
}
public class UserDetails
{
public List<Guid> Domains { get; set; }
}
public class UserDto
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public List<Guid> DomainIds { get; set; }
}
Настройка отображения следующая:
CreateMap<IUser, UserDto>()
.ForMember(
dest => dest.Id,
opt => opt.MapFrom(src => src.Key.Id))
.ForMember(
dest => dest.DomainIds,
opt => opt.MapFrom(src => src.Details.Domains))
В моем тесте я сопоставляю пользователя (который является IUser) следующим образом. К вашему сведению, все остальные свойства отображаются нормально
_mapper.Map<UserDto>(user);