C# 对象间的 深拷贝 实现
原创muzizongheng 博主文章分类:C# ©著作权
©著作权归作者所有:来自51CTO博客作者muzizongheng的原创作品,请联系作者获取转载授权,否则将追究法律责任
以下的这个类实现了 2个含有部分字段名字相同 的对象的 赋值拷贝。
public class ShallowCopyHelper
{
public static void CopyPropertiesValue(object objFrom, object objTo)
{
if (null == objFrom)
{
return;
}
if (null == objTo)
{
return;
}
Type typeFrom = objFrom.GetType();
Type typeTo = objTo.GetType();
if (objFrom is IList)
{
try
{
int count = (objFrom as IList).Count;
for (int i = 0; i < count; i++)
{
CopyPropertiesValue((objFrom as IList)[i], (objTo as IList)[i]);
}
}
catch
{
//
}
}
else
{
foreach (System.Reflection.PropertyInfo pi in
typeFrom.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))
{
try
{
object valueFrom = typeFrom.GetProperty(pi.Name).GetValue(objFrom, null);
object valueTo = typeTo.GetProperty(pi.Name).GetValue(objTo, null);
if (typeFrom.GetProperty(pi.Name).PropertyType.IsClass
&& !typeFrom.GetProperty(pi.Name).PropertyType.IsPrimitive
&& !(valueFrom is String))
{
CopyPropertiesValue(valueFrom, valueTo);
}
else
{
if (valueFrom == null || !valueFrom.Equals(valueTo))
{
//Set value to latest data
typeTo.GetProperty(pi.Name).SetValue(objTo, valueFrom, null);
}
}
}
catch
{
//
}
}
}
}
}
下一篇:批处理中格式化Date
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
浅析C#深拷贝与浅拷贝
1.深拷贝与浅拷贝 拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”层副本中,所有的对象都是重复
C# winform 深拷贝 浅拷贝 拷贝构造函数 -
C# 对象拷贝
WPF 做应用的时候 俩个窗体传值 发现 如果 点击取消 依然会有残余的值留在对象里现
C# 克隆 软件设计 WPF sql