考慮下面的代碼(已經簡化了)。我有一個服務類,它返回一個特定DTO對象的列表,每個對象都實現它們自己的特定接口。在實際的代碼中,由於我正在使用遺留代碼,因此迭代通過數據集來填充這些代碼。依賴注入 - 與數據傳輸對象(DTO)一起使用?
問題:
我們如何創建/使用DTO沒有newing起來或使用服務定位器反模式?在Composition Root中編寫一個空的DTO對象並通過構造函數將它注入Service類沒有多大意義,因爲實際上在填充列表時將DTO用作臨時變量。
在代碼中,您可以看到一個新的DTO示例。但是,如果我首先使DTO不實現接口,那麼這並不會讓我感覺更好。所以他們不應該實現接口,因此,不使用DI與DTOs?
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;
}
}
相關:http://stackoverflow.com/questions在您的例子的情況下(我名義上是「從」類型訂單的對象進行)/4835046/why-not-use-an-ioc-container-to-resolve-dependencies-for-entities-business-objec – 2013-04-25 11:53:04
重複有趣的答案:http://stackoverflow.com/questions/8135894/c-sharp- dto-constructor-and-dependency-injection/8136059#8136059 – 2013-04-25 11:55:00