sam*_*mar 14 .net c# serialization clone
我正在尝试使用以下方法创建对象的深层克隆.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
此方法需要一个Serialized对象,即一个具有"Serializable"属性的类的对象.我有一个类,它具有属性"DataContract",但该方法不使用此属性.我认为"DataContract"也是一种序列化器,但可能与"Serializable"不同.
有谁能请给我两者之间的区别?另请告诉我是否可以创建一个只有1个属性的对象的深度克隆,它可以完成"DataContract"和"Serializable"属性的工作,也可能是创建深度克隆的不同方式?
请帮忙!
Ode*_*ded 23
SerializableBinaryFormatter工作需要.
DataContract和DataMember属性一起使用DataContractSerializer.
您可以使用两个序列化程序的属性来装饰类.
DataContract用于WCF因此.NET 3.0+.在.net 2.0或更低版本中,不存在DataContract DataMember属性Serializable.
正如Oded所说,如果你想使用BinaryFormatter,你必须使用Serializable来装饰类型.
| 归档时间: |
|
| 查看次数: |
12415 次 |
| 最近记录: |