我有两个数据模型,一个用于数据库,一个用于视图模型,如
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实例。然后,我需要在viewmodel中稍后映射对象。
答案 0 :(得分:0)
我不得不稍微改变我的viewmodel并从构造函数中删除了父。
我通过在我的个人资料中包含Constructusing来解决映射器问题:
public Profile()
{
CreateMap<ModelB, ViewModelB>()
.PreserveReferences().ConstructUsing((a, context) => new ViewModelB(context.Mapper))
.ForMember(c => c.Parent, opt => opt.MapFrom(s => s.Parent))
c.Players));
}