能否在AutoMapper映射配置中仅为单个CreateMap调用使用ClearPrefixes()
针对单个AutoMapper映射清除Get*前缀的解决方案
要实现仅对指定映射关闭Get*前缀的自动识别,无需全局修改前缀规则,直接在单个映射配置中调整即可:
如果你想完全清除该映射的所有默认前缀识别(包括Get、Is、Has等),直接在
CreateMap后调用ClearPrefixes()方法:var mapperConfig = new MapperConfiguration(cfg => { // 保留原有全局配置和其他映射 cfg.CreateMap<OtherSource, OtherTarget>(); // ... 其他大量CreateMap调用 // 针对目标映射清除前缀 cfg.CreateMap<Source, Target>() .ClearPrefixes(); });如果你只想移除Get前缀的识别,保留其他默认前缀(如Is、Has),可以先清除所有前缀,再重新添加需要保留的:
cfg.CreateMap<Source, Target>() .ClearPrefixes() .RecognizePrefixes("Is", "Has");
这样配置后,AutoMapper在处理Source到Target的映射时,不会将GetProp去掉前缀匹配到Prop,而是直接匹配同名的GetProp属性,完美解决字符串赋值问题,同时不会影响其他映射的前缀规则。未来新增的同类命名属性也会自动遵循这个映射规则,无需逐个添加Ignore()。
内容的提问来源于stack exchange,提问作者Grimm
相关产品推荐
相关产品推荐

