我有一個C#中的對象,讓我們說20個屬性,它是數據合同的一部分。我還有另一個具有類似屬性的業務實體,我想從響應對象中填充該實體。除了將一個對象的每個屬性分配給另一個對象的相應屬性之外,是否有任何方法可以做到這一點?從另一個具有相同屬性的對象創建對象
2
A
回答
5
是的,看看Automapper
0
C# Object Clone Wars可能是一個很好的起點。
1
如果您想以自動方式進行反射,只要屬性名稱在對象之間輕鬆映射即可,反射是一個選項。
1
Automapper值得一試,但最終我決定不適合我。這些工具的大問題是每次發生大量的運行時間開銷,並且每次發生映射時都會發生。我問了這個問題same question last week,最後我滾動了自己的解決方案(查看接受的答案)。你可以自由修改我提供的源代碼,我沒有聲稱它的有效性,適用性,性能,你破解它,保留碎片等等,但它運行良好爲我創建設計時對象到對象映射。
2
MiscUtil具有使用Expression
(.NET 3.5)和靜態字段緩存編譯委託回答這個(PropertyCopy
)(所以每次調用的成本可以忽略不計):
DestType clone = PropertyCopy<DestType>.CopyFrom(original);
如果你是使用2.0,那麼反射可能是你的朋友。如果需要,您可以使用HyperDescriptor
來提高性能。
相關問題
- 1. 如何爲一個類創建具有相同屬性的多個對象,但每個對象的值不同
- 2. 從另一個對象創建對象
- 3. 如何值從另一個對象具有相同的定義添加到一個對象的屬性在JavaScript
- 4. 從對象中刪除屬性是從具有相似名稱的另一個對象中刪除屬性
- 5. JavaScript:如果另一個對象在另一個屬性中具有相同值,則更改對象值
- 6. 使用現有的對象屬性創建一個JavaScript對象
- 7. CodeDom - 創建具有對象數組屬性的對象
- 8. R:創建了一個具有兩個屬性(class?)的對象
- 9. 將一個對象的屬性複製到另一個具有相同基底的對象
- 10. 從另一個對象分配一個對象屬性
- 11. 從軌道中的另一個對象創建一個對象
- 12. Typescript:創建一個具有多維屬性的對象
- 13. 具有對象相同屬性的多個值的篩選器
- 14. 用屬性創建一個對象,
- 15. 具有與單一參數相同屬性的對象?
- 16. 創建一個具有另一個類的對象的類
- 17. 不能兩個ListItem對象具有相同的值屬性嗎?
- 18. 從另一個對象方法內訪問對象屬性
- 19. 如何使用Django中具有相同屬性的另一個模型創建對象
- 20. 如何添加一個具有相似父對象和另一個具有相似對象列表的父對象到同一對象列表
- 21. 不同的javascript對象具有相同的屬性(名稱)
- 22. 是否可以從同一個原型對象中的另一個屬性創建一個屬性?
- 23. 創建從在另一個對象
- 24. C#:比較具有相同屬性的不同對象集
- 25. 將數據從一個對象複製到另一個具有有限屬性的對象
- 26. 創建具有多個屬性的對象
- 27. 循環遍歷對象數組並返回具有相同/鍵值對的對象作爲另一個對象
- 28. 爲什麼在同一行創建的兩個對象具有相同的對象,但這與列表不同?
- 29. 以不同方式從另一個對象創建對象的設計模式
- 30. 以與具有一些共同屬性的對象的另一個對象列表相同的順序排列對象列表