C# automapper 嵌套对象条件映射

C# automapper nested object conditional map

我正在使用 .Net Core 和最新的自动映射器版本,我对嵌套对象有疑问。

我有一个如下所示的视图模型(这是我无法更改的第 3 方视图模型):

public class MyTempA
{ 
    string ShapeName;
    object ShapeDetails;
    //....some other props
}

我已经 db classes 并查看下面的模型

  1. 方形(数据库实体)
  2. SquareViewModel
  3. 金字塔(数据库实体)
  4. 金字塔视图模型
  5. 圆柱体(数据库实体)
  6. 圆柱视图模型

我为上述数据库实体提供了单独的映射器来查看模型。

我的问题: MyTempA 中的 ShapeDetails 对象可以是任何基于 ShapeName 的视图模型。我如何使用 Automapper 映射它?

如果 ShapeName 是 Square,ShapeDetails 应该是 SquareViewModel(映射自 Square 数据库 class)。

谢谢

您可以使用两个选项:

第一个是如果你的 classes 有一个基础 class.

,使用 AutoMapper 提供的映射继承特性

https://docs.automapper.org/en/stable/Mapping-inheritance.html

作为第二个选项,您可以编写自定义值解析器:

https://docs.automapper.org/en/stable/Custom-value-resolvers.html