gpt4 book ai didi

c# - 从 dto 转换为多态业务对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:00 27 4
gpt4 key购买 nike

我正在使用接收表示订单的平面 DTO 的 Web 服务,我必须将订单的业务表示转换为该平面表示。
这是对象-
DTO:
dto

业务对象:
business object

现在的问题是如何转换我的 Order 实体?
我可以想到 2 种可能的解决方案:

  1. Order 知道如何将自己表示为 DTO:OrderDTO dto = order.ToDto();
    但这有一个明显的缺点,即业务实体知道数据表示。

  2. 通过某种转换器完成此操作:OrderDTO dto = Convertor.Convert(order);
    但转换器代码必须如下所示:

    如果(订单是在线订单)
    {
    dto.Email = ((OnlineOrder)order).Email;
    }这当然很糟糕。

有什么建议吗? automapper 可以在这里提供帮助吗(我不是很熟悉)?

最佳答案

您正在寻找一家工厂,这实际上就是您的“转换器”。您的代码将类似于:

var factory = new OrderDTOFactory();
OrderDTO orderDTO = factory.CreateOrder(order);

在工厂内部,您可以通过几种不同的方式实现它。 Automapper 在这里可能很有用,值得考虑,尽管您的 DTO 不是很大。对于具有许多需要传输的属性的对象,Automapper 对我来说最有用。

我不认为您的“转换器”代码真的那么糟糕。它易于阅读,但不是很可扩展。但是,如果子类的数量是非常静态的,那么这不是真正的问题,不是吗?我不确定除了更细粒度的反射之外,你还能如何判断你的类是否有特定方法。

关于c# - 从 dto 转换为多态业务对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com