AutoMapper 根据源属性将目标设置为 null

ADr*_*ger 5 c# automapper

我正在两个对象之间进行映射,并且根据源的条件,我希望目标为空。

例如,以下是这些类:

public class Foo
{
    public int Code { get; set; }
    public string Name { get; set; }

}

public class Bar
{
    public string Name { get; set; }
    public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

还有我的地图:

Mapper.CreateMap<Foo, Bar>()
            .AfterMap((s, d) => { if (s.Code != 0) d = null; });
Run Code Online (Sandbox Code Playgroud)

但似乎忽略了AfterMap。尽管具有所有默认属性,但 Bar 已初始化。

如何让映射器根据 Code 不等于 0 返回 null?

谢谢

Ami*_*osh 2

一种可能的方法是 -

class Converter : TypeConverter<Foo, Bar>
{
    protected override Bar ConvertCore(Foo source)
    {
        if (source.Code != 0)
            return null;
        return new Bar();
    }
}


static void Main(string[] args)
    {
        Mapper.CreateMap<Foo, Bar>()
            .ConvertUsing<Converter>();


        var bar = Mapper.Map<Bar>(new Foo
        {
            Code = 1
        });
        //bar == null true
    }
Run Code Online (Sandbox Code Playgroud)