【发布时间】:2011-05-31 12:49:07
【问题描述】:
我正在尝试使用以下方法创建对象的深层克隆。
public static T DeepClone<T>(this T target)
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, target);
stream.Position = 0;
return (T)formatter.Deserialize(stream);
}
}
此方法需要一个已序列化的对象,即具有“可序列化”属性的类的对象。我有一个类具有属性“DataContract”,但该方法不适用于此属性。我认为“DataContract”也是一种序列化程序,但可能与“Serializable”不同。
谁能告诉我两者之间的区别?另外请让我知道是否可以创建一个只有 1 个属性的对象的深度克隆,该属性可以同时执行“DataContract”和“Serializable”属性的工作,或者可能是创建深度克隆的不同方式?
请帮忙!
【问题讨论】:
标签: c# .net serialization clone