克隆任意对象的函数

2024-04-20

我正在寻找一种方法来克隆在编译时(或运行时,我认为)未知的对象。问题的确切措辞是“编写一个可以克隆任意对象的函数”,例如

  • 将未知对象传递给函数。
  • 返回对象的深层副本。

我猜我需要使用反射来读取函数和变量,然后了解如何创建一个新对象并将这些值分配给它。我可以使用 Type.GetType() 来查找类型并创建一个新实例,然后使用它known对象的复制构造函数。但我不确定给定的类是否会实现一个(深度),或者问题是否要求这样的解决方案(我不明白所需的结果是什么,这无济于事!)。

有人可以引导我朝正确的方向前进吗?需要类/接口,如果您慷慨的话,还可以使用伪代码来实现这一目标吗?


您可以简单地Serialize and Deserialize一个用于克隆的对象。
以下函数将执行此操作:

public object Clone(object obj)
{
    MemoryStream ms = new MemoryStream();
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(ms, obj);
    ms.Position = 0;
    object obj_clone = bf.Deserialize(ms);
    ms.Close();
    return obj_clone;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

克隆任意对象的函数 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 查找目录中最新的文件而不读取其所有内容

    我试图在一个巨大的文件系统中找出最新的文件 一种方法是浏览所有目录 一次一个 读取其内容 选择最新文件等 明显的缺点是我必须得到all特定目录中的文件 我想知道 Python 1 中是否有一个 Unix 支持的 神奇 调用来获取目录中的最新
  • Lua中如何获取目录列表

    我需要 LUA 中的目录列表 假设我的目录路径为 C Program Files 我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹 Example 需要路径 C Program Files 中所有文件夹的列表 以下是上
  • 如何使用 Ruby 在现有 PDF 上编辑或书写?

    我有几个 PDF 模板文件 其中包含复杂的内容和几个空白区域 区域 我需要能够在这些空白区域写入文本并将生成的 PDF 保存在文件夹中 我在谷歌上非常集中地搜索了这个问题的答案 但没有找到明确的答案 更好的解决方案之一是PDF 工具包 ht
  • 读取由其他线程上的 Interlocked 更新的 int

    这是重复 如何正确读取 Interlocked Increment ed int 字段 https stackoverflow com questions 6139699 how to correctly read an interlock
  • mysql 选择不同的字母,包括扩展拉丁字符

    原问题 表结构 CREATE TABLE texts letter VARCHAR 1 CHARACTER SET utf8 COLLATE utf8 general ci NOT NULL text VARCHAR 255 CHARACT
  • 创建具有特定键的对象数组,然后从对象中删除该键

    我使用 lodash 从特定键创建对象数组 然后从其对象中删除该给定键 我有这个 var cars itemID KUsw42xU S1qA y3TiI use this as key name Car One qtd 1 itemID K
  • 在 jQuery 中获取默认服务器时间?

    如何使用 jQuery 获取网络服务器时间 这是一种无需服务器端任何特定代码甚至有效路径即可工作的方法 try var date new Date ajax type HEAD url getResponseHeader Date catc
  • VIM:在窗口左侧显示 3 个字符边框

    Context 我正在使用 NERDTree 插件 让我烦恼的一件事是 NERDTree 本身和我的代码之间的视觉垂直边界 我发现阅读我的代码有点烦人 我当前的设置如下所示
  • Minix 与 Linux 相比如何学习操作系统设计?

    我想学习操作系统设计 我想知道在此过程中我是否应该解决 Minix 或 GNU Linux 问题 我喜欢书籍 所以我主要关注一本书 尽管视频资源 大概是录像讲座 也很受欢迎 我已经正式学习了 C 和 C 可以用它们编写中小型程序 我对数据结
  • Java 泛型和设计模式:不参数化对泛型类型的引用总是一件坏事?

    这个问题与我的上一个问题部分相关question https stackoverflow com questions 7300163 java generic programming with unknown generic type of
  • 将 IntelliJ IDEA 缓存/索引目录移动到 RAM

    我正在尝试移动caches and index从 IntelliJ IDEA 配置目录到 RAM 挂载点的目录 tmp使用符号链接 我已经添加 tmpfs tmp ramdisk tmpfs defaults size 1024M x gv
  • React 路由器将查询附加到 URL

    React 路由器似乎在我的路由末尾附加了一个查询 该应用程序由运行 Express 的节点服务器提供服务 我正在使用最新版本的反应路由器 1 0 0 rc1 例子 http localhost 8080 users k 8wsy62 两个
  • Mercurial:虚拟合并后分支特定的更改不断返回

    我有一个 Mercurial 存储库 有两个永久分支 默认分支和 UAT 每隔一段时间 我们就会将应用程序的新版本部署 升级 到 UAT 环境 并通过将稳定的默认提交合并到 UAT 分支来实现这一点 有时 UAT 分支中的错误会得到修复 并
  • 对于有多个孩子的单亲,正确使用 fork() 和 pipeline() 。我该如何正确地做到这一点?

    So my 上一篇文章 https stackoverflow com questions 26321100 concept any good c example of fork pipe where one parent creates
  • KVO vs NSNotification vs 协议/委托?

    我知道何时使用哪个 但确切的用法我仍然不清楚 有人可以举例解释吗 如果您只想与一个对象对话 请使用委托 例如 tableView 有一个委托 只有一个对象应该负责处理它 如果您想告诉每个人发生了什么事 请使用通知 例如 在内存不足的情况下
  • 如何在 C++ 中打印带前缀 + 的正数

    有没有办法在 C 中打印整数及其符号 即默认情况下 如果数字为负数 我们会得到一个 印有标志 同理我们可以得到 在正数之前 int x 1 cout lt lt x lt
  • 使用 workbox-webpack-plugin 时,预缓存资源使用什么工作箱策略?

    我正在尝试了解工作箱和服务人员 使用workbox webpack plugin和GenerateSW模式时 用于预缓存资源的workbox策略是什么 IE 因为我似乎没有为预缓存资产设置路由 策略 以便服务工作线程更新这些资产的缓存 那么
  • PHP 本地化 - gettext 还是数组?

    设置多语言网站现在我需要决定为网站上的静态文本使用哪个选项 让我解释一下我的网站设置 然后您是否可以帮助我决定使用哪种解决方案 该站点是一个CMS系统 允许多个域指向同一目录并根据域名提供内容 因此所有域共享相同的代码 在网站上 我创建了称
  • iOS Safari:清除输入类型日期

    我制作了一个 NET mvc 应用程序 其中有一个字段 在 iPhone 在 Safari 中 上 一旦我单击此字段 就会出现一个本机 iOs 日期选择器 它有效 我可以选择一个日期 确认它 使用 完成 按钮 并提交表格 然后我再次访问此页
  • 克隆任意对象的函数

    我正在寻找一种方法来克隆在编译时 或运行时 我认为 未知的对象 问题的确切措辞是 编写一个可以克隆任意对象的函数 例如 将未知对象传递给函数 返回对象的深层副本 我猜我需要使用反射来读取函数和变量 然后了解如何创建一个新对象并将这些值分配给