我有一個具有許多屬性的對象,我需要在每次迭代中創建該對象的副本,以便將所有屬性複製到具有最後設置值的新出生對象中。 (我不能全部複製所有的屬性和它們的值,因爲我的對象實際上是一個自定義的用戶控件,它有很多屬性,我不知道它們全都是!)C#通過值複製一個對象
1
A
回答
2
有一種更簡單的方法通過使用JSON序列化程序將對象克隆到另一個對象。這個技巧不需要對克隆類的接口進行修改或實現,只需要像JSON.NET這樣的JSON序列化器。
public static T Clone<T>(T source)
{
var serialized = JsonConvert.SerializeObject(source);
return JsonConvert.DeserializeObject<T>(serialized);
}
+0
你將不得不安裝Newtonsoft.Json –
1
您可以使用該擴展方法來複制所有對象字段,當您嘗試複製字段和屬性,是引用類型properties.There可以有一些錯誤。
public static T CopyObject<T>(this T obj) where T : new()
{
var type = obj.GetType();
var props = type.GetProperties();
var fields = type.GetFields();
var copyObj = new T();
foreach (var item in props)
{
item.SetValue(copyObj, item.GetValue(obj));
}
foreach (var item in fields)
{
item.SetValue(copyObj, item.GetValue(obj));
}
return copyObj;
}
相關問題
- 1. 將值從一個對象複製到另一個對象
- 2. 複製對象值
- 3. C#通過另一個類更改對象值
- 4. 複製MVC模型類對象的值到另一個對象
- 5. Max/Msp C++中的過去對象(通過閾值時增加一個值)
- 6. 通過const引用複製傳遞C++對象構造函數
- 7. 如何在C++中通過引用複製對象?
- 8. 通過c#代碼複製數據庫對象
- 9. 複製對象javascript以便通過值傳遞
- 10. 通過.NET中的值複製COM對象
- 11. 複製自定義對象按值複製它不是通過引用
- 12. Angular-2:將一個對象複製到另一個對象
- 13. 將一個對象複製到另一個對象
- 14. 不能一個jQuery對象複製到一個jQuery對象
- 15. 複製從一個對象到另一
- 16. 通過複製一些數據重新創建Firebase對象android
- 17. C#對象複製列表
- 18. 在C++ lambda表達式中通過值捕獲是否需要將值與lambda對象一起復制?
- 19. 通過一個對象創建一個新對象的循環
- 20. 循環通過一個對象,並在另一個對象
- 21. C#通過一個事件從多個對象路由事件
- 22. 通過字節複製一個流[]
- 23. 不可能複製當一個對象
- 24. django:通過一個外鍵模型的多個鍵值對來過濾對象
- 25. 在ASP.NET得到一個複雜的對象通過的jQuery/AJAX
- 26. 使用ngFor通過一個「更復雜」對象來迭代
- 27. C#:用於將一個複雜對象映射到另一個複製對象的庫
- 28. C#的新對象,而不是複製一個對象,但引用?
- 29. 通過json對象獲取對象而不是值「讀取」通過json對象
- 30. 簡單的方法將對象值複製到另一個類型的對象?
你有什麼試過的?請顯示對象。爲什麼不能一個一個地複製屬性? –
該對象實際上是我自己創建的用戶控件。我不知道用戶控件的所有屬性! – MohsenCs
@ReyanChougle,感謝您的評論,我無法實現自定義克隆功能,因爲我的對象是一個用戶控件並且有很多屬性。 – MohsenCs