考虑下面的代码(已经简化)。我有一个服务类,它返回一个特定DTO对象列表,每个对象都实现自己的特定接口。在实际代码中,这些通过迭代数据集进行填充,因为我正在使用遗留代码。
问题:
1. 如何在不newing它们或使用Service Locator反模式的情况下创建/使用DTO? 在组合根中构成一个空的DTO对象并通过构造函数将其注入到服务类中并不太有意义,因为我实际上将使用DTO作为一种临时变量来填充列表。
2. 在代码中可以看到我newing DTO的示例。但这并不比如果我一开始就没有使DTO实现接口更好。那么它们不应该实现接口,因此不使用DTO的DI?
问题:
1. 如何在不newing它们或使用Service Locator反模式的情况下创建/使用DTO? 在组合根中构成一个空的DTO对象并通过构造函数将其注入到服务类中并不太有意义,因为我实际上将使用DTO作为一种临时变量来填充列表。
2. 在代码中可以看到我newing DTO的示例。但这并不比如果我一开始就没有使DTO实现接口更好。那么它们不应该实现接口,因此不使用DTO的DI?
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;
}
}