克隆类(克隆出一个一摸一样的对象)
来源:互联网 发布:棋牌类游戏源码 编辑:程序博客网 时间:2024/05/16 19:10
//克隆类(克隆出一个一摸一样的对象)
using System.IO;
using System.Xml.Serialization;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
static class CloneClass
{
public static Object Clone(Object needCloneObject)
{
//先把类实例序列化
MemoryStream msSer = new MemoryStream();
XmlSerializer xml = new XmlSerializer(needCloneObject.GetType());
xml.Serialize(msSer, needCloneObject);
byte[] arr = msSer.ToArray();
MemoryStream msDeSer = new MemoryStream(arr);
return xml.Deserialize(msDeSer);
}
//泛型对拷
public static void CopyCollection<T1, T2>(Dictionary<T1, T2> srcDictionary, ref Dictionary<T1, T2> dest)
{
if (dest == null)
dest = new Dictionary<T1, T2>();
else
dest.Clear();
IEnumerator<T1> srcs = srcDictionary.Keys.GetEnumerator();
while (srcs.MoveNext())
{
T1 src = srcs.Current;
try
{
T1 key = (T1)CloneClass.Clone(src);
T2 value;
if (srcDictionary.TryGetValue(key, out value))
{
value = (T2)CloneClass.Clone(value);
dest.Add(key, value);
}
}
catch { }
}
}
public static void CopyCollection<T>(ObservableCollection<T> srcDictionary, ref ObservableCollection<T> dest)
{
if (dest == null)
dest = new ObservableCollection<T>();
else
dest.Clear();
for (int i = 0; i < srcDictionary.Count; i++)
{
T src = srcDictionary[i]; try
{
T value = (T)CloneClass.Clone(src);
dest.Add(value);
}
catch { }
}
}
}
using System.IO;
using System.Xml.Serialization;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
static class CloneClass
{
public static Object Clone(Object needCloneObject)
{
//先把类实例序列化
MemoryStream msSer = new MemoryStream();
XmlSerializer xml = new XmlSerializer(needCloneObject.GetType());
xml.Serialize(msSer, needCloneObject);
byte[] arr = msSer.ToArray();
MemoryStream msDeSer = new MemoryStream(arr);
return xml.Deserialize(msDeSer);
}
//泛型对拷
public static void CopyCollection<T1, T2>(Dictionary<T1, T2> srcDictionary, ref Dictionary<T1, T2> dest)
{
if (dest == null)
dest = new Dictionary<T1, T2>();
else
dest.Clear();
IEnumerator<T1> srcs = srcDictionary.Keys.GetEnumerator();
while (srcs.MoveNext())
{
T1 src = srcs.Current;
try
{
T1 key = (T1)CloneClass.Clone(src);
T2 value;
if (srcDictionary.TryGetValue(key, out value))
{
value = (T2)CloneClass.Clone(value);
dest.Add(key, value);
}
}
catch { }
}
}
public static void CopyCollection<T>(ObservableCollection<T> srcDictionary, ref ObservableCollection<T> dest)
{
if (dest == null)
dest = new ObservableCollection<T>();
else
dest.Clear();
for (int i = 0; i < srcDictionary.Count; i++)
{
T src = srcDictionary[i]; try
{
T value = (T)CloneClass.Clone(src);
dest.Add(value);
}
catch { }
}
}
}
0 0
- 克隆类(克隆出一个一摸一样的对象)
- javascript克隆一个对象
- 深克隆一个对象
- php中对象克隆和一个简单的单列类
- 一个克隆对象的C#基类
- 一个克隆对象的C#基类
- 对象克隆的分析
- php对象的克隆
- 对象的克隆(clone)
- js对象的克隆
- 对象的克隆
- 对象的克隆(clone)
- java对象的克隆
- java对象的克隆
- java对象的克隆
- java 对象的克隆
- C++对象的克隆
- 对象的克隆clone
- Linux中后缀名为ko、o、a、so、la的文件介绍
- Qt on Android: http下载与Json解析
- python mysql 常见问题汇总
- 解决_CRT_SECURE_NO_WARNINGS 警告
- 一种STM32的串口控制台的实现(非常实用)
- 克隆类(克隆出一个一摸一样的对象)
- java 几种基本类型的长度值
- 用unix socket加速php-fpm、mysql、redis的连接
- 如何判断Unix系统及库文件是32位还是64位的
- 关于json_decode的两点
- 青岛朗讯面试经历
- C++拷贝构造函数详解
- linux下不解压tar.gz文件查看文件大小
- Linux shell 的入门