AutoMapper и условное отображение на нуль - PullRequest
0 голосов
/ 22 марта 2012

Я хочу создать отображение следующим образом:

  • , если у свойства источника есть Id == 0, установите для свойства назначения значение null

  • если свойство источника имеет Id! = 0, сопоставьте это свойство, используя конфигурацию по умолчанию

Например:

Mapper.CreateMap<ItemViewModel, Item>()
    .ForMember(x => x.DestinationArticle, o => o.SetNullIfSourceHasIdZero(x => x.SourceArticle));

Свойства DestinationArticle и SourceArticle имеют видреализации:

public interface IEntity
{
    long Id { get; set }
}

Мое текущее решение таково:

.ForMember(x => x.DestinationArticle, o => o.MapFrom(x => x.SourceArticle != null && x.SourceArticle.Id != 0 ? Mapper.Map<Article>(x.SourceArticle) : null))

, что не так хорошо и не является общим.

Итак, есть ли способ создать,упомянутый ранее, метод расширения SetNullIfSourceHasIdZero или что-то, что могло бы облегчить мою жизнь?

1 Ответ

0 голосов
/ 22 марта 2012

Попробуйте что-нибудь в этом духе ..

Mapper.CreateMap<ItemViewModel, Item>()
    .ForMember(x => x.DestinationArticle, opt => opt.ResolveUsing<SetNullIfSourceHasIdZero>());

public class SetNullIfSourceHasIdZero : ValueResolver<ItemViewModel, DestinationArticle>
{
     protected override DestinationArticle ResolveCore(ItemViewModel item)
     {
        // logic here            
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...