C# automapper 嵌套对象条件映射
Posted
技术标签:
【中文标题】C# automapper 嵌套对象条件映射【英文标题】:C# automapper nested object conditional map 【发布时间】:2022-01-06 02:57:23 【问题描述】:我正在使用具有最新自动映射器版本的 .Net Core,我对嵌套对象有疑问。
我有一个像下面这样的视图模型(这是我无法更改为第 3 方的):
public class MyTempA
string ShapeName;
object ShapeDetails;
//....some other props
我有下面的 db 类和视图模型
-
方形(数据库实体)
SquareViewModel
金字塔(数据库实体)
金字塔视图模型
圆柱体(数据库实体)
圆柱视图模型
我已经为上述数据库实体提供了单独的映射器来查看模型。
我的问题: MyTempA 中的 ShapeDetails 对象可以是任何基于 ShapeName 的视图模型。如何使用 Automapper 进行映射?
如果 ShapeName 是 Square,ShapeDetails 应该是 SquareViewModel(映射自 Square db 类)。
谢谢
【问题讨论】:
【参考方案1】:您可以使用两个选项:
如果你的类有基类,第一个是使用 AutoMapper 提供的映射继承特性。
https://docs.automapper.org/en/stable/Mapping-inheritance.html
作为第二种选择,您可以编写自定义值解析器:
https://docs.automapper.org/en/stable/Custom-value-resolvers.html
【讨论】:
非常感谢。我没有基类,所以我必须通过第二个选项。我正在浏览有关自定义值解析器的文章,但它们仅显示静态属性(如 int、decimal ...),我没有看到返回的映射器/ViewModel。你有任何示例链接吗? 这是一个简单的基本示例:gist.github.com/NQuirmbach/df606e2b32cedfd3e3f847a4bf81769e以上是关于C# automapper 嵌套对象条件映射的主要内容,如果未能解决你的问题,请参考以下文章