带有前缀的AutoMapper

Cli*_*son 18 c# 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; }
}
Run Code Online (Sandbox Code Playgroud)

显然这张地图不起作用

AutoMapper.Mapper.CreateMap<A, B>();
b = AutoMapper.Mapper.Map<A, B>(a);
Run Code Online (Sandbox Code Playgroud)

Per*_* P. 24

Mapper.Initialize(cfg =>
{
   cfg.RecognizeDestinationPrefixes("Cust_");
   cfg.CreateMap<A, B>();
});

A a = new A() {FirstName = "Cliff", LastName = "Mayson"};
B b = Mapper.Map<A, B>(a);

//b.Cust_FirstName is "Cliff"
//b.Cust_LastName is "Mayson"
Run Code Online (Sandbox Code Playgroud)

或者:

Mapper.Configuration.RecognizeDestinationPrefixes("Cust_");
Mapper.CreateMap<A, B>();
...
B b = Mapper.Map<A, B>(a);
...
Run Code Online (Sandbox Code Playgroud)

  • 干杯两种方法都很完美.虽然这两种方法似乎都不是特定于实际的地图A到B,但实际上会影响任何其他映射说A到C (2认同)