带有前缀的AutoMapper

我正在尝试使用Automapper映射到对象,问题是我想要映射的对象之一在其所有属性前面都有一个前缀’Cust_’而一个没有。 有没有办法进行这种映射。

比如说我有

class A { String FirstName { get; set; } String LastName { get; set; } } class B { String Cust_FirstName { get; set; } String Cust_LastName { get; set; } } 

显然这张地图不起作用

 AutoMapper.Mapper.CreateMap(); b = AutoMapper.Mapper.Map(a); 

 Mapper.Initialize(cfg => { cfg.RecognizeDestinationPrefixes("Cust_"); cfg.CreateMap(); }); A a = new A() {FirstName = "Cliff", LastName = "Mayson"}; B b = Mapper.Map(a); //b.Cust_FirstName is "Cliff" //b.Cust_LastName is "Mayson" 

或者:

 Mapper.Configuration.RecognizeDestinationPrefixes("Cust_"); Mapper.CreateMap(); ... B b = Mapper.Map(a); ... 

该文档有一篇关于识别前/后修正的文章

有时您的源/目标属性将具有共同的前/后修复,导致您必须执行一堆自定义成员映射,因为名称不匹配。 要解决此问题,您可以识别前/后缀:

 public class Source { public int frmValue { get; set; } public int frmValue2 { get; set; } } public class Dest { public int Value { get; set; } public int Value2 { get; set; } } Mapper.Initialize(cfg => { cfg.RecognizePrefix("frm"); cfg.CreateMap(); }); 

Mapper.AssertConfigurationIsValid(); 默认情况下,如果需要清除前缀,AutoMapper会识别前缀“Get”:

 Mapper.Initialize(cfg => { cfg.ClearPrefixes(); cfg.RecognizePrefixes("tmp"); });