我想深入克隆一个通用列表,但是在windows phone 8.1中不存在icloneable接口,二进制格式化类也不存在?
答案 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();
}