如何为Automapper单个映射配置前缀移除而非全局设置?
针对单个AutoMapper映射移除前缀的简便实现
嘿,这个需求很好解决!AutoMapper本身就支持为单个映射单独配置前缀识别规则,完全不需要全局设置,这样就不会误影响其他映射了。
你只需要把RecognizePrefixes方法直接链式调用在目标映射的CreateMap后面,而不是放在Profile构造函数的全局位置。修改后的代码如下:
public partial class MappingProfile : Profile { public MappingProfile() { // 仅对这个特定映射移除"Can"前缀,其他映射不受影响 CreateMap<Candidate, CandidateVM>() .RecognizePrefixes("Can"); } }
原理说明
- 全局的
RecognizePrefixes会作用于Profile中所有的映射规则,而链式调用在CreateMap之后的RecognizePrefixes,只会对当前这一对类型的映射生效。 - AutoMapper会自动识别源对象中以"Can"开头的属性,并移除前缀后匹配目标VM中的属性(比如源的
CanVote会映射到目标的Vote)。
如果之后你需要针对其他映射设置不同的前缀,同样可以用这种方式单独配置,非常灵活。
内容的提问来源于stack exchange,提问作者Michael Andrews
相关产品推荐
相关产品推荐

