AutoMapper 值转换器(Value Transformers)
值转换器对单一类型应用额外的转换。在分配值之前,AutoMapper
会检查即将设置的值是否有任何关联的值转换,并在设置之前应用它们。
您可以在几个不同的级别创建值转换器:
- 全局
- 配置文件(Profile)
- 映射(Map)
- 成员(Member)
var configuration = new MapperConfiguration(cfg => {
// 在全局级别添加字符串类型的值转换器
cfg.ValueTransformers.Add<string>(val => val + "!!!");
});
var source = new Source { Value = "Hello" };
var dest = mapper.Map<Dest>(source);
// 断言 dest.Value 应该是 "Hello!!!"
dest.Value.ShouldBe("Hello!!!");
在这个例子中,我们定义了一个全局的值转换器,它会对所有映射过程中的字符串值追加 "!!!"
。因此,当源对象 Source
的 Value
属性值为 "Hello"
时,经过映射后,目标对象 Dest
的 Value
属性变成了 "Hello!!!"
。