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
会更容易。