>我有两个数据模型,一个用于数据库,一个用于视图模型,如
public class ModelA{
string name {get;set;}
}
public class ModelB{
ModelA Parent;
ModelB(ModelA parent){
Parent = parent;
}
}
视图模型模型是相同的
public class ViewModelA{
string name {get;set;}
}
public class ViewModelB{
ViewModelA Parent;
IMapper map;
ViewModelB(ViewModelA parent, IMapper _map){
Parent = parent;
map = _map;
}
}
我试图让自动映射器在视图模型 B 和模型 B 的参数内映射父对象。但是我尝试过的所有内容都失败了,或者我只能创建父对象的新实例(使用 ConstructUsing),而不能映射构造函数中的实例。
这是我目前对上述内容的个人资料
public ModelBProfile:Profile{
CreateMap<ModelB, ViewModelB>()
.ForMember(m => m.Parent, opt => opt.MapFrom(p => p.Parent));
}
我一直在使用统一容器和WPF和Prism。导航到视图模型 A 的视图时,Unity 会成功注入父类(其中有一个实例)。我还使用 Unity 来存储自动映射器实例。然后,我需要在视图模型中稍后映射对象。
我不得不稍微改变我的视图模型并从构造函数中删除父级。
我通过在配置文件中包含构造来解决映射器问题,如下所示:
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));
}