【发布时间】:2017-03-31 08:28:29
【问题描述】:
我有两种数据模型,一种用于数据库,一种用于视图模型,例如
public class ModelA{
string name {get;set;}
}
public class ModelB{
ModelA Parent;
ModelB(ModelA parent){
Parent = parent;
}
}
和 ViewModel 的模型是一样的
public class ViewModelA{
string name {get;set;}
}
public class ViewModelB{
ViewModelA Parent;
IMapper map;
ViewModelB(ViewModelA parent, IMapper _map){
Parent = parent;
map = _map;
}
}
我试图让 automapper 在 ViewModelB 和 Model B 的参数中映射父对象。但是我尝试的一切都失败了,或者我只能创建父对象的新实例(使用 ConstructUsing),而不是映射构造函数。
这是我目前的上述个人资料
public ModelBProfile:Profile{
CreateMap<ModelB, ViewModelB>()
.ForMember(m => m.Parent, opt => opt.MapFrom(p => p.Parent));
}
我一直在使用统一容器以及 WPF 和 Prism。当导航到 ViewModel A 的视图时,Unity 成功注入了父类(其中有一个实例)。我还使用 Unity 来存储 AutoMapper 实例。然后我需要在视图模型中稍后映射对象。
【问题讨论】:
-
@Rabban 感谢您的帮助,我用这个 .PreserveReferences().ConstructUsing((league, context) => new LeagueModel(context.Mapper)) 解决了我的问题
标签: c# mapping automapper