C# automapper 嵌套对象条件映射
C# automapper nested object conditional map
我正在使用 .Net Core 和最新的自动映射器版本,我对嵌套对象有疑问。
我有一个如下所示的视图模型(这是我无法更改的第 3 方视图模型):
public class MyTempA
{
string ShapeName;
object ShapeDetails;
//....some other props
}
我已经 db classes 并查看下面的模型
- 方形(数据库实体)
- SquareViewModel
- 金字塔(数据库实体)
- 金字塔视图模型
- 圆柱体(数据库实体)
- 圆柱视图模型
我为上述数据库实体提供了单独的映射器来查看模型。
我的问题:
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
我正在使用 .Net Core 和最新的自动映射器版本,我对嵌套对象有疑问。
我有一个如下所示的视图模型(这是我无法更改的第 3 方视图模型):
public class MyTempA
{
string ShapeName;
object ShapeDetails;
//....some other props
}
我已经 db classes 并查看下面的模型
- 方形(数据库实体)
- SquareViewModel
- 金字塔(数据库实体)
- 金字塔视图模型
- 圆柱体(数据库实体)
- 圆柱视图模型
我为上述数据库实体提供了单独的映射器来查看模型。
我的问题: 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