AutoMapper - 是否可以在AddTransform中访问源对象?

时间:2017-11-29 19:11:07

标签: c# automapper

我希望在使用ResolveUsing的通用IMemberValueResolver后检查属性是否仍为空。我尝试了AfterMap但是在收集后ResolveUsing后它没有应用,所以我认为AddTransform可能更合适。

基于existing AutoMapper unit tests,我可以看到可以覆盖目标属性:

p.CreateMap<Source, Dest>()
   .ForMember(d => d.Value, opt => opt.AddTransform(d => d + ", seriously"));

是否可以访问AddTransform内的源对象以从该对象中提取值以覆盖目标?

这是我基本上想要做的事情:

cfg.CreateMap<Foo, Bar>()
    .ForMember(d => d.Description, opts =>
    {
        opts.ResolveUsing<LocalizeResolver, ResourceType>(src => src.ResourceType);
        opts.AddTransform(d => "whatever"); // src.Description??
    })
    .AfterMap((src, dst) => {
        // this never works
        if (string.IsNullOrWhiteSpace(dst.Description))
        {
            dst.Description = src.Description;
        }
    });

0 个答案:

没有答案