我有一個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. 選擇具有相同的一個屬性和不同的另一個對象
- 4. 如何值從另一個對象具有相同的定義添加到一個對象的屬性在JavaScript
- 5. 從對象中刪除屬性是從具有相似名稱的另一個對象中刪除屬性
- 6. JavaScript:如果另一個對象在另一個屬性中具有相同值,則更改對象值
- 7. 使用現有的對象屬性創建一個JavaScript對象
- 8. CodeDom - 創建具有對象數組屬性的對象
- 9. R:創建了一個具有兩個屬性(class?)的對象
- 10. 將一個對象的屬性複製到另一個具有相同基底的對象
- 11. 從另一個對象分配一個對象屬性
- 12. Typescript:創建一個具有多維屬性的對象
- 13. 從軌道中的另一個對象創建一個對象
- 14. 具有對象屬性的Ruby對象
- 15. 具有與對象屬性相同名稱的原型屬性
- 16. 有多少個對象具有相同的屬性值?
- 17. 從另一個對象類型創建一個對象
- 18. 從Jquery對象中選擇具有相同屬性的div
- 19. 如何創建兩個對象具有相同屬性 - 克隆不工作
- 20. 具有對象相同屬性的多個值的篩選器
- 21. 用屬性創建一個對象,
- 22. 具有與單一參數相同屬性的對象?
- 23. 創建一個具有另一個類的對象的類
- 24. 使用javascript創建多個2D對象數組,其中對象具有相同的屬性
- 25. ES6解構兩個對象具有相同的屬性名稱
- 26. 不能兩個ListItem對象具有相同的值屬性嗎?
- 27. 具有相同DataSource屬性的兩個BindingSource對象
- 28. 將對象轉換爲具有相同數據的另一個對象? Java
- 29. 從另一個對象方法內訪問對象屬性
- 30. 如何使用Django中具有相同屬性的另一個模型創建對象