如何处理类型未知且无关紧要的通用字典?

2024-02-15

如果“值”是传入的通用字典,其类型未知/无关紧要,我如何获取其条目并将它们放入类型的目标字典中IDictionary<object, object> ?

if(type == typeof(IDictionary<,>))
{
    // this doesn't compile 
    // value is passed into the method as object and must be cast       
    IDictionary<,> sourceDictionary = (IDictionary<,>)value;

    IDictionary<object,object> targetDictionary = new Dictionary<object,object>();

    // this doesn't compile
    foreach (KeyValuePair<,> sourcePair in sourceDictionary)
    {
         targetDictionary.Insert(sourcePair.Key, sourcePair.Value);
    }

    return targetDictionary; 
}

EDIT:

感谢到目前为止的回复。

这里的问题是 Copy 的参数仅被称为“object”类型。例如:

public void CopyCaller(object obj) 
{ 
    if(obj.GetType() == typeof(IDictionary<,>) 
         Copy(dictObj); // this doesn't compile 
} 

让你的方法也变得通用,然后你就可以做你正在做的事情了。您不必更改使用模式,因为编译器将能够从输入类型推断泛型类型。

public IDictionary<object, object> Copy(IDictionary<TKey, TValue> source)
{

    IDictionary<object,object> targetDictionary = new Dictionary<object,object>();

    foreach (KeyValuePair<TKey, TValue> sourcePair in sourceDictionary)
    {
         targetDictionary.Insert(sourcePair.Key, sourcePair.Value);
    }

    return targetDictionary; 
}

如果你真的不需要将其转换为IDictionary<TKey, TValue> to IDictionary<object, object>那么你可以使用复制构造函数Dictionary<TKey, TValue>它接受另一个字典作为输入并复制所有值 - 就像您现在所做的那样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理类型未知且无关紧要的通用字典? 的相关文章

  • 如何从 C# 可移植类库 (PCL) 添加对 F# 可移植库的引用

    我有一个项目 其中包含两个 F 项目和一个 C 项目 我想在其中编写一些 XUnit 测试 FS PL F 3 1 3 3 1 0 可移植库 FS PL Legacy F 31 2 3 5 1 可移植库 旧版 测试 C NET 4 5 Wi
  • C# 3 新功能帖子(与 .Net 3.5 功能无关)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Net F
  • C# 中具有字符串键类型的不区分大小写字典

    如果我有一个Dictionary
  • 关闭模态后清除模态字段

    我有这个模式
  • 安全地检查“this”是否为空

    首先 我知道在空指针上调用方法是未定义的行为 我还知道 因为这不应该发生 编译器可以 并且确实 假设this始终为非空 但在实际代码中 有时您会不小心这样做 通常 它没有任何不良影响 当然除了this方法中为 null 并且事情可能会崩溃
  • 如何从 nuget 包中排除子目录和内容

    所以我有一个网站正在尝试打包用于 Octopus Deploy 我有以下文件夹结构 Web Views WantThis Dontwantthis WantThis1 WantThis2 lots more Scripts 我试图排除 Do
  • 未构建 csproj 时抑制 AfterBuild 目标

    我在 MSBuild 中有一个构建后目标来复制一些构建输出 这是 linkedin 作为对AfterBuild目标 暴露于Microsoft CSharp targets
  • 为什么编译器不对同一翻译单元中的 ODR 违规发出警告

    在同一个翻译单元中 ODR 问题很容易诊断 那么为什么编译器不会针对同一翻译单元中的 ODR 违规发出警告呢 例如在下面的代码中https wandbox org permlink I0iyGdyw9ynRgny6 https wandbo
  • 替换 Python 列表/字典中的值?

    好的 我正在尝试过滤传递给我的列表 字典并稍微 清理 它 因为其中有某些值我需要删除 所以 如果它看起来像这样 records key1 AAA key2 BBB key3 CCC key4 AAA 我如何快速轻松地运行所有内容并将 AAA
  • 如何将 Activator.CreateInstance 与字符串一起使用?

    在我的反射代码中 我的通用代码部分遇到了问题 特别是当我使用字符串时 var oVal object Test var oType oVal GetType var sz Activator CreateInstance oType oVa
  • 了解C/C++中函数调用的堆栈框架? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我也是 C C 和汇编语言的新手 这
  • allocator.construct 循环是否等于 std::uninitialized_copy?

    在此背景下T是某种类型并且allocator是该类型的分配器对象 默认情况下是std allocator
  • 如何在调试时轻松查看事件订阅数量?

    在调试时 我可以查看一下textBox1 TextChanged查看事件订阅数量 如果是 那么我该如何钻取它 我需要知道在给定时间有多少订阅进行调试 因为看起来一个事件被多次触发 但我怀疑这个错误确实是因为textBox1 TextChan
  • CGAL:如何有效计算多面体的面面积?

    我有一个多面体 其面是三角形 我知道在 CGAL 中 Triangle 3 类提供了 squared area 方法 通过它我们可以计算三角形的面积 有什么方法可以将其应用到多面体方面吗 或者关于如何计算每个面的面积有什么想法吗 这是一个例
  • 从多页 tiff 中提取帧 - C#

    有一个多页 tiff 我想从此 Tiff 文件中提取第 n 页 帧 n 并保存它 如果我的多页 tiff 有 3 帧 在我提取一页 帧后 我想留下 1 张图像有 2 页 帧 并且 1 张图像只有 1 页 帧 下面是一些代码 用于将多帧 ti
  • 在信号/槽处理期间删除 QObject

    我知道从槽处理中删除 QObject 可能会使应用程序崩溃 因为它可能有其他排队的事件 因此 我将使用 obj gt deleteLater 而不是使用 delete obj 据我所知 obj 等待处理所有排队的事件 然后 删除 obj Q
  • 将base64字符串转换为图像c#时出错

    我想在我的网页上显示图像 并单击应该下载的链接按钮 存储的图像文件以二进制格式存储在db中 将 base64 字符串转换为图像时显示错误 详细信息如下 帮助我找到合适的解决方案 谢谢 Error Code protected void Pa
  • 同时运行 x 个网络请求

    我们公司有一个网络服务 我想通过我自己的服务发送 XML 文件 存储在我的驱动器上 HTTPWebRequestC 中的客户端 这已经有效了 Web服务同时支持5个同步请求 一旦服务器上的处理完成 我就会从Web服务获得响应 每个请求的处理
  • 使用抽象类作为模板类型

    我对c 还是很陌生 来自java 我有一个 stl 类型列表Actor When Actor仅包含 真实 方法就没有问题 我现在想将这个类扩展到几个类 并且需要将一些方法更改为抽象的 因为它们不再具有具体的意义 正如我 从文档中 预期的那样
  • qt 如何知道按钮被点击?

    我正在尝试编写一个程序 用声音进行一些操作 我的问题是我有 3 个播放按钮和 3 个标签 我希望无论我单击 播放 按钮 都应该播放按钮附近标签中名称的声音 我有一个没有任何参数的播放插槽 那么 如何分别连接到每个播放按钮和每个标签呢 实际上

随机推荐

  • 如何通过NotificationListener利用Android Nougat的直接回复功能?

    我的应用程序正在使用NotificationListener读取来自各种 3rd 方应用程序的消息 例如 WhatsApp 到目前为止 如果只有一个聊天未读 我就能够发送回复 代码如下 然而 就 WhatsApp 而言 getNotific
  • ASP.NET MVC 多线程,值得吗?

    我有点困惑 我的 ASP NET MVC 应用程序将托管在服务器上 那么使其成为多线程有什么意义吗 例如 如果我想要一个线程来执行我的翻译 这是一个好主意吗 有人可以向我详细说明一下吗 我对网络应用程序多线程与桌面应用程序多线程有点困惑 这
  • 安全终止 Spring JMS 应用程序

    我正在开发一个 Spring boot JMS 应用程序 该应用程序严格使用 bean 注释进行设置 并从 WebshpereMQ 读取消息 一切正常 除了我不知道如何安全地关闭这个应用程序 一旦我的 JMSListener 方法读取了所有
  • 如何从 C++ 中的 void 函数中退出?

    如果函数是 void 函数 如何在不返回值的情况下提前退出 我有一个 void 方法 如果某个条件为真 则不需要执行其代码 我真的不想改变方法来实际返回一个值 使用返回语句 return or if condition return 如果您
  • 跟踪通过我的应用程序发送和接收的数据的使用情况

    如何跟踪通过我的应用程序发送和接收的数据的使用情况 我只想记录我的应用程序运行时发送和接收的字节 如果我可以获取 Wifi 和蜂窝网络的单独信息 那就太好了 但这不是优先事项 我知道如何查找设备的总使用情况 https stackoverf
  • 内联表单集在保存时返回空列表?

    当我尝试保存内联表单集时 它只返回一个空列表 并且数据库中没有反映任何更改 我尝试过在没有选项和 commit False 的情况下执行此操作 但它们都有相同的结果 我知道有数据 因为我将表单集打印为表格 并且我知道它是有效的 因为属性 i
  • Typescript 如何声明子类类型?

    有可能有这样的事情吗 export abstract class FilterBoxElement abstract getEntities any export interface FilterBoxControlSuggestions
  • 如何测试我的 PHP 上是否安装了 SimpleXML?

    有人知道吗 那个东西是默认安装的 但是有没有一种简单的方法来检查扩展是否安装了呢 我检查 simplexml load string 对我可用 但是 simplexml 没有在 php ini 上列出怎么办 还有另一种方法 您可以创建一个p
  • 错误“Keras 需要 TensorFlow 2.2 或更高版本”

    我刚刚安装了 Visual Studio 2019 和 Tensorflow 但无法导入 Keras 因为收到以下错误消息 Keras 需要 TensorFlow 2 2 或更高版本 通过以下方式安装 TensorFlowpip insta
  • 处理 .NET 中的部分/不完整日期

    我需要处理部分日期 例如 2009 年 4 月 1 日 存储为 1 4 200 2000 年 1 月 存储为 null 1 2000 90 年 3 月 存储为 null 1990 年 3 月 00 存储为 null null 2000 等等
  • Tortoise SVN 提交时出错:“无效的 PROPPATCH 属性”

    我在 Windows 7 机器上使用 tortoise svn 1 6 16 并在提交时出现错误 如下所示 Error Commit failed details follow Error At least one property cha
  • 如何在Mule中通过HTTP请求发送文件并通过FTP上传到文件服务器

    我想在 HTTP POST 请求中发送一个文件 然后让 Mule 使用 FTP 将文件上传到服务器上的文件目录 看起来 FTP 连接器将有效负载保存到文件目录 但这实际上是空的 并且 FTP 将一个空文件写入该目录 我已经使用 Postma
  • 向 Blackberry 项目添加外部 Jar 并测试兼容性

    我是黑莓开发的新手 我有 Eclipse 3 5 1 和 Blackberry JRE 4 7 0 在我的应用程序中 我向项目中添加了 2 个外部 jar 和一个属性文件 我不确定我尝试添加的 jar 和我调用的 Web 服务是否与 Bla
  • 在 C++11 中,没有 std::atomics 的无锁哈希是否能保证线程安全?

    考虑以下针对多线程搜索算法的无锁哈希表的尝试 受此启发paper http www cis uab edu hyatt hashing html struct Data uint64 t key uint64 t value struct
  • 在使用 putExtra 的同时使用 ADB 启动活动

    我一直在尝试使用安卓文档 http developer android com tools help shell html确定如何使用 putExtra 启动活动 我的 putExtra 值是 String 类型 我尝试了 true 1 的
  • 如何在 UML 中将属性显示为“只读”?

    我想用图表描述 API 的一些模型 是否有标准如何将属性标记为readonly 这些属性由系统设置 API 使用者无法修改 目前我滥用类图符号private and public属性 但我对此并不满意 谢谢你的想法 通常 当您进行接口编码时
  • 如何使用 C# 在我的 Twitter 帐户上发布推文

    我正在尝试在 MVC 应用程序中开发一项在我的 Twitter 帐户上发布推文的功能 为此 我在 Twitter 中创建了一个应用程序 因此已经拥有以下内容 消费者 API 密钥 消费者 API 密钥 访问令牌 访问令牌秘密 在应用程序详细
  • 如何判断当前鼠标光标是否有动画?

    有没有办法确定当前鼠标光标是否有动画 我一直在寻找一种方法如何保存当前光标 https stackoverflow com questions 6940831 how can i save currently used cursor int
  • 如何在 Protractor 中连接并重新使用已打开的浏览器窗口

    一般来说 量角器脚本在具有以下功能的新浏览器实例中执行 capabilities browserName firefox 有没有任何片段或方法可以对此进行调整 这样我们的脚本就可以通过量角器使用已经打开的浏览器 什么对我有用 对angula
  • 如何处理类型未知且无关紧要的通用字典?

    如果 值 是传入的通用字典 其类型未知 无关紧要 我如何获取其条目并将它们放入类型的目标字典中IDictionary