克隆任意对象的函数

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(使用前将#替换为@)

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

  • 尚未注册类型“IServiceProviderFactory[Autofac.ContainerBuilder]”的服务

    当运行以下命令添加数据库迁移脚本时 出现以下错误 dotnet ef migrations add InitialCreate v o Migrations context MyContext 访问 Microsoft Extensions
  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • 在 C# 中按元素相乘数组具有意想不到的性能

    我想找到按元素相乘两个数组的最佳方法 这是更广泛项目的一部分 其中性能而不是唯一的考虑因素 我今天开始用 C Linqpad 编写一些函数 因此它还没有以任何方式进行优化 下面代码的输出如下 Environment ProcessorCou
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 使用 Enumerable.OfType() 或 LINQ 查找特定类型的所有子控件

    Existed MyControl1 Controls OfType
  • 如何在 C# / .NET 中创建内存泄漏[重复]

    这个问题在这里已经有答案了 可能的重复 托管代码中是否可能存在内存泄漏 特别是 C 3 0 https stackoverflow com questions 6436620 is it possible to have a memory
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

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

    我试图在一个巨大的文件系统中找出最新的文件 一种方法是浏览所有目录 一次一个 读取其内容 选择最新文件等 明显的缺点是我必须得到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 日期选择器 它有效 我可以选择一个日期 确认它 使用 完成 按钮 并提交表格 然后我再次访问此页
  • 克隆任意对象的函数

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