C# 条件反向映射
我有以下映射程序设置C# 条件反向映射,c#,automapper,C#,Automapper,我有以下映射程序设置 public class InnerDest { public int B { get; set; } } public class OuterDest { public int A { get; set; } public InnerDest Inner { get; set; } } public class FlatSource { public int A { get; set; } public int? B { get;
public class InnerDest
{
public int B { get; set; }
}
public class OuterDest
{
public int A { get; set; }
public InnerDest Inner { get; set; }
}
public class FlatSource
{
public int A { get; set; }
public int? B { get; set; }
}
CreateMap<InnerDest, FlatSource>(MemberList.Source)
.ReverseMap();
CreateMap<OuterDest, FlatSource>()
.IncludeMember(dest => dest.Inner)
.ReverseMap()
.ForMember(dest => dest.Inner, opt => opt.Condition(source => source.B.HasValue()));
最里面的公共类
{
公共int B{get;set;}
}
公共类最外层
{
公共int A{get;set;}
公共InnerDest内部{get;set;}
}
公共类FlatSource
{
公共int A{get;set;}
公共int?B{get;set;}
}
CreateMap(MemberList.Source)
.ReverseMap();
CreateMap()
.IncludeMember(目标=>目标内部)
.ReverseMap()
.ForMember(dest=>dest.internal,opt=>opt.Condition(source=>source.B.HasValue());
这样做的目的是使属性
internal
成为可选的,但它不起作用。无论条件如何,始终设置该属性。现在我用AfterMap
来做,但我想知道是否有更好的方法来做。你可以删除反向映射。或者,如果您必须:
c.CreateMap<InnerDest, FlatSource>(MemberList.Source).ReverseMap();
c.CreateMap<OuterDest, FlatSource>()
.IncludeMembers(s => s.Inner)
.ReverseMap()
.ForPath(dest => dest.Inner, opt => opt.Condition(context => context.Source.B.HasValue));
c.CreateMap(MemberList.Source).ReverseMap();
c、 CreateMap()
.IncludeMembers(s=>s.Inner)
.ReverseMap()
.ForPath(dest=>dest.internal,opt=>opt.Condition(context=>context.Source.B.HasValue));
检查。我想在这里删除ReverseMap
会更容易。