我正在尝试使用以下方法创建一个对象的深度克隆。
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);
}
}
这种方法需要一个被序列化的对象,即一个带有“Serializable”属性的类对象。我有一个带有“DataContract”属性的类,但是该方法无法使用该属性。我认为“DataContract”也是一种类型的序列化程序,但可能与“Serializable”不同。
请问有人能告诉我两者之间的区别吗?同时,请让我知道是否可能创建一个深层克隆仅具备1个属性,它可以执行“DataContract”和“Serializable”属性的工作,或者也许还有其他创建深层克隆的方法?
请帮忙!
DataContract
,Serializable
将被忽略。我从未听说过你遇到的问题。 - Oded