Automapper - карта вложенного свойства

У меня есть вопрос об Automapper. Это мой вариант использования: у меня есть эти классы:

Бизнес:

public class Item
{
    public NestedItem NestedItem{get;set;}
}

public class NestedItem
{
    public string Name{get;set;}
}

ViewModel:

public class ItemViewModel
{
    public string NestedItemName{get;set;}
}

Когда я хочу сопоставить Item с ItemViewModel. Automapper map property NestedItem.Name в NestedItemName правильно. Но, наоборот, это не работает. Сопоставление не меняет значение NestedItem.Name.

1 ответ

У меня есть немного противоречивый ответ на ссылку, указанную выше, возможно, я просто иду по своим вещам неловко, но я верю, что вы можете сделать это на одной карте. Например:

Mapper.CreateMap<ItemViewModel, Item>()
    .ForMember(dest => dest.NestedItem, opt => 
         opt.MapFrom(src => new NestedItem(src.NestedItemName));

Теперь, конечно, для этого потребуется создать новый конструктор или добавить пустой конструктор и использовать фигурные скобки.

Я не могу комментировать производительность, так как AutoMapper - очень сложный монстр. Однако это должно сработать.

Другие вопросы по тегам