gpt4 book ai didi

interface - 依赖注入(inject) - 与数据传输对象 (DTO) 一起使用?

转载 作者:行者123 更新时间:2023-12-02 11:28:24 25 4
gpt4 key购买 nike

考虑下面的代码(已被简化)。我有一个服务类,它返回特定 DTO 对象的列表,每个对象都实现自己的特定接口(interface)。在实际代码中,当我使用遗留代码时,这些是通过迭代数据集来填充的。

问题:

  1. 我们如何在不更新 DTO 或不使用服务定位器反模式的情况下创建/使用 DTO?在组合根中组合一个空的 DTO 对象并通过构造函数将其注入(inject)到 Service 类中没有多大意义,因为我实际上在填充列表时使用 DTO 作为某种临时变量。

  2. 在代码中,您可以看到我更新 DTO 的示例。不过这个感觉没多大比我一开始就让 DTO 不实现接口(interface)要好。那么他们不应该实现接口(interface),从而不将 DI 与 DTO 结合使用吗?

<小时/>
public class Services : IServices
{
public IList<IDTO> GetDTOs()
{
...
List<IDTO> dtos = new List<IDTO>();
foreach (c in d)
{
DTO dto = new DTO();
dto.x = c.x;
dto.y = c.y;
dto.z = c.z;
dtos.Add(dto);
}
return dtos;
}
}

最佳答案

对我来说,将任何 DI 用于 DTO 都没有多大意义。我可能会使用工厂模式来获取模型对象的 DTO。

DTO 不需要由容器管理其生命周期;我只是新建它们。不要过度设计。

关于interface - 依赖注入(inject) - 与数据传输对象 (DTO) 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6297322/

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