2014-11-05 163 views
0

我对Automapper有疑问。这是我用例: 我有这些类:Automapper - 地图嵌套属性

经营业务:

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

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

视图模型:

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

当我想项目映射到ItemViewModel。自动映射器地图属性NestedItem.Name到正确。 但以相反的方式,它不起作用。映射不会更改NestedItem.Name的值。

+0

[Automapper map into nested class]的可能重复(http://stackoverflow.com/questions/7924185/automapper-map-into-nested-class) – 2014-11-06 02:30:42

回答

0

我对上面提到的链接有一个稍微矛盾的答案,也许我只是用尴尬的方式去讨论我的事情,但我相信你可以在一张地图内做到这一点。例如:

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

现在当然这需要您创建一个新的构造函数或添加一个空构造函数并使用大括号。

由于AutoMapper是一个非常复杂的怪物,我无法评论其性能。然而,这应该做的伎俩。