В настоящее время я использую 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.