带有前缀的AutoMapper

时间:2012-02-17 00:58:15

标签: 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; }
}

显然这张地图不起作用

AutoMapper.Mapper.CreateMap<A, B>();
b = AutoMapper.Mapper.Map<A, B>(a);

2 个答案:

答案 0 :(得分: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"

或者:

Mapper.Configuration.RecognizeDestinationPrefixes("Cust_");
Mapper.CreateMap<A, B>();
...
B b = Mapper.Map<A, B>(a);
...

答案 1 :(得分:0)

该文档有一篇关于Recognizing pre/postfixes

的文章

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

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

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

{{1}}