AutoMapper Разрешить значение свойства в месте назначения на основе значения свойства третьего объекта - PullRequest
4 голосов
/ 08 декабря 2010

Можно ли использовать AutoMapper для отображения из источника в место назначения, условно разрешая некоторые свойства на основе значения свойства другого объекта?Например, сопоставление Source.Property с Destination.Property, где ThirdObject.CountryCode.Equals ("SomeCountry").

Текущая база кода настроена таким образом, что значения сопоставляются из DataReader со списком объектов.Затем, если ThirdObject.CountryCode имеет определенное значение, тогда свойство количества в целевом объекте должно быть умножено на множитель.

В настоящее время я думаю о решении проблемы, придумав что-то вроде:

   Mapper.Map<IDataReader, Destination>(dataReader)
      .OnCondition(ThirdObject.CountryCode.Equals("SomeCountry")
      .ForMember(destination => destination.Amount)
      .UpdateUsing(new Multiplier(fixedAmount));

Я надеюсь, что есть более простой путь, прежде чем идти по этому пути.

1 Ответ

3 голосов
/ 08 декабря 2010

Посмотрите на ResolveUsing:

    Mapper.CreateMap<Journal_Table, Journal>()
        .ForMember(dto => dto.Id, opt => opt.MapFrom(src => src.JournalId)) 
        .ForMember(dto => dto.Level, opt => opt.ResolveUsing<JournalLevelResolver>().FromMember(name => name.Journal_level));

Тогда:

public class JournalLevelResolver : ValueResolver<string, JournalLevel>
{

    protected override JournalLevel ResolveCore(string level)
    {
       ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...