我有一个具有许多属性的对象,我需要在每次迭代中创建该对象的副本,以便将所有属性复制到具有最后设置值的新出生对象中。 (我不能全部复制所有的属性和它们的值,因为我的对象实际上是一个自定义的用户控件,它有很多属性,我不知道它们全都是!)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