我希望在使用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;
}
});