所以我有这个;
public class Parent
{
public string SomeProperty { get; set; }
public Child ChildProperty { get; set; }
}
public class Child
{
public string ChildProperty { get; set; }
public string OtherChildProperty { get; set; }
}
public class Flat
{
public string SomeProperty { get; set; }
public string ChildProperty { get; set; }
}
然后我这样做;
Flat source = new Flat { SomeProperty = "test", ChildProperty = "test" };
Parent dest = GetParentFromDataContext();
Mapper.Map<Flat,Parent>(source,dest);
然后我的期望是它dest.ChildProperty.OtherChildProperty
仍然设置为从数据上下文中提取时的状态。但是我正在努力做到这一点。
如果我CreateMap
是这样,那么我会得到一个“必须解决到顶级成员”的异常;
Mapper.CreateMap<Flat,Parent>()
.ForMember(dest => dest.Parent.ChildProperty.ChildProperty,
options => options.MapFrom(source => source.ChildProperty))
.ForMember(dest => dest.Parent.ChildProperty.OtherChildProperty,
options => options.Ignore());
但是,如果我执行以下操作,则new Child {}
替换Child
从数据上下文中提取的内容基本上是清除OtherChildProperty
;
Mapper.CreateMap<Flat,Parent>()
.ForMember(dest => dest.Child
options => options.MapFrom(source => new Child { ChildProperty = source.ChildProperty } ));
我如何映射它并保留我希望忽略的子属性?