对于自定义的类,在进行对象赋值过程中会采用引用的方式来传值,所以下面利用.net的反射机制来编写复制对象(主要是属性数据)的代码。具体代码如下:
#region 复制对象数据
/// <summary>
/// 复制对象数据(类)
/// </summary>
/// <param name="copyObj">复制的对象</param>
/// <returns></returns>
public static object CopyObject(object copyObj)
{
object result = null;
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
if (assembly != null)
{
Type tempType = assembly.GetType(copyObj.GetType().ToString());
if (tempType != null)
{
System.Reflection.PropertyInfo[] props = tempType.GetProperties();
if (props != null && props.Length > 0)
{
result = Activator.CreateInstance(tempType);
for (int i = 0; i < props.Length; i++)
{
props[i].SetValue(result, props[i].GetValue(copyObj, null), null);
}
}
}
}
return result;
}
#endregion