几何尺寸与公差论坛

 找回密码
 注册
查看: 945|回复: 3

visionpro的图像深度复制

  [复制链接]
发表于 2023-3-22 13:30:21 | 显示全部楼层 |阅读模式
CogToolGroup B=CogSerializer.DeepCopyObject(A) as CogToolGroup;
 楼主| 发表于 2023-3-22 13:30:49 | 显示全部楼层
利用反射实现

public static T DeepCopyByReflection<T>(T obj)
{
  if (obj is string || obj.GetType().IsValueType)
  return obj;

  object retval = Activator.CreateInstance(obj.GetType());
  FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance);
  foreach(var field in fields)
  {
    try
    {
      field.SetValue(retval, DeepCopyByReflection(field.GetValue(obj)));
    }
    catch { }
  }

  return (T)retval;
}
 楼主| 发表于 2023-3-22 13:31:15 | 显示全部楼层
public static T DeepCopyByBin<T>(T obj)
{
            object retval;
            using (MemoryStream ms = new MemoryStream())
            {
                BinaryFormatter bf = new BinaryFormatter();
                //序列化成流
                bf.Serialize(ms, obj);
                ms.Seek(0, SeekOrigin.Begin);
                //反序列化成对象
                retval = bf.Deserialize(ms);
                ms.Close();
            }
            return (T)retval;
}
 楼主| 发表于 2023-3-22 13:31:32 | 显示全部楼层
用反射深拷贝或者二进制深拷贝都可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-12-22 00:33 , Processed in 0.036802 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表