如何在完全不同的类之间创建自动映射器功能

时间:2018-10-21 12:16:35

标签: c# .net-core automapper

当源类和目标类完全不同时,如何创建AutoMapper配置?我想在一些外部类(不能更改)和要保留在数据库中的类之间创建映射。我可以保留整个外部类,但是我不想这样做以节省空间。我正在使用.net core 2.0。

例如:我有一个像下面这样的外部类:

A
{
   B {
        b1;b2;b3;
   }
   C {
        c1;c2;c3;
   }
}

以上内容需要映射到我的类,如下所示:

A
{
    Optmized_BC{ 
      b1;
      b2;
      c1;
    }
    c2;
}

在上述情况下创建AutoMapper配置的最佳方法是什么?我应该为每个源/目标变量对调用CreateMap吗?有没有一种方法可以在一个CreateMap调用中映射所有变量(也许使用一些聪明的linq?)

1 个答案:

答案 0 :(得分:0)

您可以将数据作为JSON持久存储在数据库中,然后使用Newtonsoft JSON库将其反序列化到另一个类将很容易。您必须确定是否比为每种情况编写映射器函数更容易。相同的结构/命名将自动反序列化,否则,您可以使用“动态”。

只是给您一个想法:

var result = JsonConvert.DeserializeObject<dynamic>(json);
A a = new A();
a.Optmized_BC.b1 = result.B.ToObject<B>().b1;

我建议使用显式映射器,并用单元测试覆盖