AutoMapper:几乎总是 trim 个字符串

AutoMapper: almost always trim strings

因此,按照 this answer 的建议,我在我的基本 AutoMapper (3.3.1) 配置中设置了一个字符串到 trimmed 字符串映射,如:

configuration.CreateMap<string, string>().ConvertUsing<StringToTrimmedStringConverter>();

效果很好,除了我数据库中的两个字段完全一样,出于互操作性原因需要保留空格。在两个字符串字段之间映射时,我可以在我的数据模型到实体映射中做些什么来保留空白吗?我试过:

.ForMember(d => d.WhitespaceField, 
    opts => opts.ResolveUsing<WhitespaceStringResolver>
            (m => m.WhitespaceModelField))

WhitespaceStringResolver 只是一个空操作:

public class WhitespaceStringResolver : ValueResolver<string, string>
{
 protected override string ResolveCore(string source)
 {
  return source;
 }
}

但这不起作用。我可以看到执行命中了解析器,但无论如何字符串都结束了 trimmed。

有没有什么方法可以忽略基本配置的映射而不是 trim 字符串,只针对我明确要忽略的几个字段?

升级AutoMapper版本不是我现在想做的事情。

最后解决的是添加

.AfterMap((model, entity) => 
  { entity.WhitespaceField = model.WhitespaceModelField; })

我也可以将 entity.WhitespaceField 标记为忽略,如果我不需要 field-to-field 映射来搜索按惯例使用 model-to-entity 映射的库。