如何使用automapper有条件地将目标对象设置为null

Mys*_*ter 2 c# automapper

我想做这样的事情:

AutoMapper.Mapper.CreateMap<UrlPickerState, Link>()
        .ForMember(m=>m.OpenInNewWindow,map=>map.MapFrom(s=>s.NewWindow))
        .AfterMap((picker, link) => link = !string.IsNullOrWhiteSpace(link.Url)?link:null) ;

var pickerState = new UrlPickerState();
var linkOutput = AutoMapper.Mapper.Map<Link>(pickerState);
Run Code Online (Sandbox Code Playgroud)

但是,分配的值link不会在任何执行路径中使用.
我想linkOutput为null,但事实并非如此.
如何将目标对象设为null?

涉及的对象细节:

public class Link
{
    public string Title { get; set; }
    public string Url { get; set; }
    public bool OpenInNewWindow { get; set; }
}

public class UrlPickerState
{
    public string Title { get; set; }
    public string Url { get; set; }
    public bool NewWindow { get; set; }
    //.... etc
}
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:http://dotnetfiddle.net/hy2nIa

Mys*_*ter 5

这是我最后使用的解决方案,内部有点手动,但不需要任何额外的管道.

如果有人有更优雅的解决方案,我们将不胜感激.

config.CreateMap<UrlPickerState, Link>()
            .ConvertUsing(arg =>
            {
                if (string.IsNullOrWhiteSpace(arg.Url))
                {
                    return null;
                }
                return new Link()
                {
                    Url = arg.Url,
                    OpenInNewWindow = arg.NewWindow,
                    Title = arg.Title,
                };
            });
Run Code Online (Sandbox Code Playgroud)