2015-05-03 4 views
0

Я хочу получить комментарий mapper (AutoMapper.Mapper.FindTypeMapFor), используя базовый тип.Как получить Mapper по BaseType

Можно ли получить его, как в использовании

 AutoMapper.Mapper.CreateMap<IEntity, ListItemModelBase>() 
      .Include<Book, BookListItemModel>(); 

     AutoMapper.Mapper.CreateMap<Book, BookListItemModel>()    
      .ForMember( a => a.Author, (a) => a.MapFrom(entity => entity.Author.Name)) 
      .ForMember(a => a.Genre, (a) => a.MapFrom(entity => entity.Genre.Name)); 


     AutoMapper.Mapper.CreateMap<BookListItemModel, Book>(); 

     AutoMapper.Mapper.CreateMap<BookFormModel, Book>() 
      .ForMember(a => a.Id, (model) => model.PreCondition((context) => context.Id > 0)) 
      .ForMember(a => a.UpdateDate, (model) => model.PreCondition((context) => context.Id > 0)) 
      .ForMember(a => a.InsertDate, (model) => model.PreCondition((context) => context.Id == 0)); 

     AutoMapper.Mapper.CreateMap<Book, BookFormModel>(); 

var mapper = AutoMapper.Mapper.FindTypeMapFor<IEntity, ListItemModelBase>(); 
//var mapper = AutoMapper.Mapper.FindTypeMapFor<Book, BookListItemModel>(); 
mapper.Dump(); 
mapper.GetPropertyMaps().Dump(); 
+2

Это в значительной степени, почему мне не нравится реверсивные карты. Такие сложные, предварительные условия и всевозможные сумасшедшие вещи. Просто переверните код, не ставьте всю эту логику в конфигурацию AutoMapper, которую трудно понять/поддерживать. –

ответ

0

решение я придумал

var mapper = AutoMapper.Mapper 
    .GetAllTypeMaps() 
    .Where(a => a.SourceType == typeof(Book) && typeof(ListItemModelBase).IsAssignableFrom(a.DestinationType)          && !a.DestinationType.IsAbstract) 
    .FirstOrDefault() 
Смежные вопросы