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 - очень сложный монстр. Однако это должно сработать.