Automapper 8 использует параметр в качестве условия карты

В настоящее время я использую Automapper 8.0 и пытаюсь передать параметр мапперу в качестве условия для карты.

Я сопоставляю два объекта, которые содержат IEnumerable другого объекта. Например...

public class Source {
   public IEnumerable<SourceIE> value {get; set;}
}

public class SourceIE
{
   public long Id { get; set; }
   public string Name { get; set; }
   public number Rating { get; set; }
}

public class Destination {
   public <IEnumerable>DestinationIE value {get; set;}
}

public class DestinationIE
{
   public long ID { get; set; }
   public string Name { get; set; }
   public number Rating { get; set; }
}

Я настроил автомаппер для моего корневого объекта, чтобы он игнорировал мой поддокумент, а затем создал новый сопоставитель для моих поддокументов, который я называю так:

    var mapped = _mapper.Map<IEnumerable<Destination>>
        (data, opt => opt.Items.Add("ShowStarRating", false));

и внутри маппера я пытаюсь установить условие, чтобы рейтинг отображался только в том случае, если ShowStarRating = true.

.ForMember(dest => dest.Rating, opt =>
    {
    opt.Condition(context=>
        {
            return (bool)context.Options.Items["ShowStarRating"];
        }
    );
    opt.MapFrom(src => src.Rating);
    }
);

Эта проблема у меня заключается в том, что параметры не распознаются, и при наведении указывается, что "источник" не содержит определения "параметры" и не доступен метод расширения.

Я не могу понять на всю жизнь, как получить доступ к переданным в Options.Items значениям из условия. Кажется, есть тонна информации о том, как это сделать в Automapper 5 или ниже, но ничего для 8.

1 ответ

После множества проб и ошибок я смог понять это. Оказывается, контекст был 4-м пунктом в условиях, поэтому мне просто нужно было добраться до него, прежде чем я смог прочитать его.

.ForMember(dest => dest.Rating, 
    opt => opt.Condition(
        (src, dest, x, y, context) => context.Options.Items["ShowStarRating"] == "true"
    )
);                
Другие вопросы по тегам