【问题标题】:C# automapper nested object conditional mapC# automapper 嵌套对象条件映射
【发布时间】:2022-01-06 02:57:23
【问题描述】:

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

我有一个像下面这样的视图模型(这是我无法更改为第 3 方的):

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

我有下面的 db 类和视图模型

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

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

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

如果 ShapeName 是 Square,ShapeDetails 应该是 SquareViewModel(映射自 Square db 类)。

谢谢

【问题讨论】:

    标签: c# .net-core automapper


    【解决方案1】:

    您可以使用两个选项:

    如果你的类有基类,第一个是使用 AutoMapper 提供的映射继承特性。

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

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

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

    【讨论】:

    • 非常感谢。我没有基类,所以我必须通过第二个选项。我正在浏览有关自定义值解析器的文章,但它们仅显示静态属性(如 int、decimal ...),我没有看到返回的映射器/ViewModel。你有任何示例链接吗?
    猜你喜欢
    • 2017-07-20
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2017-06-11
    相关资源
    最近更新 更多