Динамическое игнорирование свойств во время отображения с использованием AutoMapper - PullRequest
0 голосов
/ 06 марта 2019

Я использую AutoMapper в своем приложении .net-core для создания DTO из моих сущностей Nhibernate для отправки клиенту в виде JSON.Тем не менее, есть некоторые запросы, которые мне нужны, чтобы опустить определенные свойства моей сущности.Например, предположим, что у меня есть следующие классы:

public class Person
{
    public ICollection<Friend> Friends { get; set; }
}

public class PersonDTO
{
    public ICollection<FriendDTO> Friends { get; set; }
}

Теперь есть случаи, когда мне нужно отправить клиенту человека со всеми его друзьями, однако иногда мне просто нужен человек.У меня есть конфигурация автоматического преобразователя, которая определяет простое отображение между Person и PersonDTO без пропущенных свойств, потому что это наиболее распространенный случай.Однако вместо того, чтобы создавать две отдельные DTOS (одна с сопоставленным свойством Friends, а другая с игнорируемым), было бы неплохо как-то указать это во время сопоставления.Я пробовал следующее, но, похоже, это не сработало:

var personDtoWithoutFriends = _mapper.map<Person, PersonDTO>(person,
    opts => opts.ConfigureMap()
        .ForMember(dest => dest.Friends, act => act.Ignore()))

Я знаю, что могу решить эту проблему с несколькими DTO, однако в моем приложении это очень распространенный шаблон, и я бы закончилдо создания большого количества DTO.Игнорирование определенных свойств в тех немногих случаях, которые мне нужны, кажется гораздо более элегантным решением.Я делаю что-то не так или это просто невозможно с помощью AutoMapper?

...