如何深度克隆没有icloneable接口的Windows Phone 8.1中的列表<t>?

时间:2016-05-20 06:52:50

标签: windows-phone-8 windows-phone-8.1

我想深入克隆一个通用列表,但是在windows phone 8.1中不存在icloneable接口,二进制格式化类也不存在?

2 个答案:

答案 0 :(得分:1)

试试这个

 using System.IO;
 using System.Runtime.Serialization.Formatters.Binary;

public static T DeepClone<T>(T obj)
{
  using (var ms = new MemoryStream())
  {
      var formatter = new BinaryFormatter();
      formatter.Serialize(ms, obj);
      ms.Position = 0;
      return (T) formatter.Deserialize(ms);
  }
}
  
      
  • 您的课程必须标记为[Serializable]才能使其正常工作。
  •   
  • 您的源文件必须包含以下代码:
  •   

如果您想克隆所有成员,请参阅此Deep Copy of Object in C#

答案 1 :(得分:0)

您可以创建自己的icloneable接口并定义一个函数,如下所示:

 public interface IClonable<T>
 {
     T Clone();
 }

 public static T[] Clone<T>(this T[] origin) where T : IClonable<T>
 {
     return origin.Select(x => x.Clone()).ToArray();
 }