条件下的 Automapper 成员映射似乎很复杂
Automapper Member mapping on codition SeemsConvoluted
我正在尝试找到实现它的正确方法。
return isOptionTrue? Mapper.Map<Context>(myObject) : Mapper.Map<ReplayContext>(myObject);
上下文包含我实际需要的所有字段。
public class ContextReplay: Context
{
//This class is a work around to trick Automapper
}
然后当然是映射
Mapper.CreateMap<myObject, Context>()
.ForMember(x => x.Id, opt => opt.MapFrom(y => y.Id))
.ForMember(x => x.Name, opt => opt.MapFrom(y => y.Name));
.ForMember(x => x.Important, opt => opt.MapFrom(y => y.NormalProp));
Mapper.CreateMap<myObject, ContextReplay>()
.ForMember(x => x.WellId, opt => opt.MapFrom(y => y.Id))
.ForMember(x => x.Name, opt => opt.MapFrom(y => y.Name));
.ForMember(x => x.Important, opt => opt.MapFrom(y => y.ReplayProp));
如你所见,我很想:
Mapper.CreateMap<myObject, Context>()
.ForMember(x => x.WellId, opt => opt.MapFrom(y => y.Id))
.ForMember(x => x.Name, opt => opt.MapFrom(y => y.Name));
.ForMember(x => x.Important, opt => opt.MapFrom(y => isOptionTrue? y.NormProp: y.ReplayProp));
提问:是的,我有一个空子类,因为我有两个唯一的 MyObject 到 Context 映射。这整件事看起来像是一个超级 hacky 解决方法。我无法想象他们真的不支持这样的事情,但我很茫然。我不知道如何让我的 bool 一起传递。
也许我的想象力有限,但我个人认为 "auto mapping" 的用处有限,除非在两个 "identical" 类 之间进行映射。维护下面的代码不是更直接、更快、更容易吗?
var context = new Context {
WellId = myObject.Id,
Name = myObject.Name,
Important = (isOptionTrue ? myObject.NormProp : myObject.ReplayProp)
};
我正在尝试找到实现它的正确方法。
return isOptionTrue? Mapper.Map<Context>(myObject) : Mapper.Map<ReplayContext>(myObject);
上下文包含我实际需要的所有字段。
public class ContextReplay: Context
{
//This class is a work around to trick Automapper
}
然后当然是映射
Mapper.CreateMap<myObject, Context>()
.ForMember(x => x.Id, opt => opt.MapFrom(y => y.Id))
.ForMember(x => x.Name, opt => opt.MapFrom(y => y.Name));
.ForMember(x => x.Important, opt => opt.MapFrom(y => y.NormalProp));
Mapper.CreateMap<myObject, ContextReplay>()
.ForMember(x => x.WellId, opt => opt.MapFrom(y => y.Id))
.ForMember(x => x.Name, opt => opt.MapFrom(y => y.Name));
.ForMember(x => x.Important, opt => opt.MapFrom(y => y.ReplayProp));
如你所见,我很想:
Mapper.CreateMap<myObject, Context>()
.ForMember(x => x.WellId, opt => opt.MapFrom(y => y.Id))
.ForMember(x => x.Name, opt => opt.MapFrom(y => y.Name));
.ForMember(x => x.Important, opt => opt.MapFrom(y => isOptionTrue? y.NormProp: y.ReplayProp));
提问:是的,我有一个空子类,因为我有两个唯一的 MyObject 到 Context 映射。这整件事看起来像是一个超级 hacky 解决方法。我无法想象他们真的不支持这样的事情,但我很茫然。我不知道如何让我的 bool 一起传递。
也许我的想象力有限,但我个人认为 "auto mapping" 的用处有限,除非在两个 "identical" 类 之间进行映射。维护下面的代码不是更直接、更快、更容易吗?
var context = new Context {
WellId = myObject.Id,
Name = myObject.Name,
Important = (isOptionTrue ? myObject.NormProp : myObject.ReplayProp)
};