2015-10-07 2 views
1

Я пытаюсь использовать Automapper для сопоставления от иерархии объектов frontend к иерархии объектов backend. Это требует создания подкомпонента «на лету» из нескольких источников в исходном объекте. Я сделал это в других местах без проблем. Но в этом случае вновь созданный объект требует, чтобы его собственные свойства также отображались.Подкатегории сопоставления Automapper

Я добавил общую версию того, о чем я говорю ниже.

Кто-нибудь знает способ повторного вызова картографа на нижнем уровне? («Определение» в приведенном выше примере.)

+2

Вы пробовали использовать «Определение = Mapper.Map (b.Property2.Definition)»? – GTG

ответ

0

здание от комментария GTG в:

Если карта DefinitionWebObject и DefinitionBusinessObject вместе до вашего BusinessObject и WebObject отображения, вы должны быть в состоянии назвать Mapper.Map внутри вашего родительская карта.

config.CreateMap<DefinitionWebObject, DefinitionBusinessObject>(); // Create sub-mapping first. 

config.CreateMap<BusinessObject, WebObject>() 
    .ForMember(d => d.Component, opts => opts.ResolveUsing(b => 
    { 
     return new ComponentBusinessObject() 
     { 
      Date = b.Property1.Date, 
      Definition = Mapper.Map<DefinitionBusinessObject>(b.Property2.Definition) 
     }; 
    })); 
Смежные вопросы