我正在使用Web服務接收表示訂單的扁平DTO,並且必須將訂單的業務表示轉換爲此扁平表示。
這裏有對象 -
DTO:
將dto轉換爲多態業務對象
業務對象:
現在的問題是如何將我的Order
實體?
我能想到的2個可能的解決方案:
有
Order
知道如何表現自己作爲一個DTO:OrderDTO dto = order.ToDto();
但這有業務實體知道數據表示的明顯的缺點。這樣做是由某種轉換器:
OrderDTO dto = Convertor.Convert(order);
。
但是轉換器的代碼必須看起來像這樣:如果(順序是網上訂單)
{
dto.Email =((網上訂單)順序).Email;
} 這當然是可怕的。
有什麼建議嗎?可以在這裏automapper幫助(我不是很熟悉它)?
如果你的業務對象的集合對應於只有一個類DTO,這是OrderDTO,你還不如提取接口「IOrder」,像這樣的: '公共抽象類訂單實現IOrder {' 申報所有子類除抽象層次結構底部的抽象外。這樣你就可以爲所有缺失的字段提供getter和setter。然後,您將能夠創建一個createOrder方法,將接口綁定的getter的所有字段複製到DTO的setter。 – 2015-06-22 05:10:18