Автокартопостроитель: Проигнорируйте при условии

Действительно ли возможно проигнорировать отображение участника в зависимости от значения исходного свойства?

Например, если мы имеем:

public class Car
{
    public int Id { get; set; }
    public string Code { get; set; }
}

public class CarViewModel
{
    public int Id { get; set; }
    public string Code { get; set; }
}

Я ищу что-то как

Mapper.CreateMap<CarViewModel, Car>()
      .ForMember(dest => dest.Code, 
      opt => opt.Ignore().If(source => source.Id == 0))

До сих пор единственным решением, которое я имею, является также использование две модели другого представления, и создайте различные отображения для каждого.

35
задан Gibolt 31 August 2018 в 18:49
поделиться

1 ответ

Функция Ignore() предназначена только для членов, которые вы никогда не отображаете, поскольку эти члены также пропускаются при проверке конфигурации. Я проверил несколько вариантов, но не похоже, что такие вещи, как пользовательский преобразователь значений, помогут.

Используйте функцию Condition() для отображения члена, когда условие истинно:

Mapper.CreateMap<CarViewModel, Car>()
 .ForMember(dest => dest.Code, opt => opt.Condition(source => source.Id != 0))
50
ответ дан 27 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: