通过非通用 IDictionary 枚举时,无法将通用字典项 Cast() 到 DictionaryEntry

2023-12-30

我有一些迭代非泛型的代码IDictionary http://msdn.microsoft.com/en-us/library/system.collections.idictionary.aspx首先调用 LINQCast http://msdn.microsoft.com/en-us/library/bb341406.aspx方法。但是,在传递通用字典实现时,我收到无效的强制转换异常,即使我专门通过非通用字典使用它IDictionary界面。

IDictionary dict = new Dictionary<object, object> {{"test", "test"}};
foreach (var item in dict)
{
    Debug.Assert(item is DictionaryEntry); // works
}
dict.Cast<DictionaryEntry>().ToList();     // FAILS

为什么上面的 Cast 方法会失败,而正常迭代不会失败?有没有可靠的方法将非通用字典转换为枚举DictionaryEntry不诉诸手动列表构建?


问题是IEnumerable实施于Dictionary<TKey,TValue>枚举键值对。 Foreach 上IDictionary将使用IDictionary.GetEnumerator返回一个 IDictionaryEnumerator 的函数(在内部,这告诉IEnumerator函数对内部 Enumerator 类返回哪种类型。)而 Cast 函数对 IEnumerable 进行操作,这将使其返回 KeyValuePair。

你可以编写自己的 Cast 方法来解决这个问题,如果你真的must使用非泛型接口和DictionaryEntry

IEnumerable<DictionaryEntry> CastDE(IDictionary dict) {
    foreach(DictionaryEntry item in dict)
        yield return item;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过非通用 IDictionary 枚举时,无法将通用字典项 Cast() 到 DictionaryEntry 的相关文章

  • 如何在 Visual Studio 中调试 Windows PowerShell 模块?

    我正在尝试使用 Visual Studio 2015 将 PowerShell 模块编写为 VB NET 项目 我已经能够将一些命令放在一起 将类库编译到 DLL 中 将模块导入到 PowerShell 会话中并调用我创建的命令 到目前为止
  • 以编程方式访问字典中任意深度嵌套的值[重复]

    这个问题在这里已经有答案了 我正在编写一个 Python 脚本 其中给出了以下格式的字符串列表 key1 key2 key2 key21 key211 key2 key22 key3 列表中的每个值对应于字典中的一个条目 对于结构如下的条目
  • 向 .NET 隔离的 Azure 函数添加运行状况检查

    我找不到任何资源来将运行状况检查添加到在 NET 5 0 隔离中运行的 HTTPTrigger 功能应用程序 static async Task Main var host new HostBuilder ConfigureAppConfi
  • 将 CSV 文件读取到嵌套对象

    我有 CSV 文件 例如 Title Column Value A Z1 1 A Z1 2 A Z1 3 A Z2 1 A Z2 5 B Z3 4 B Z3 6 我想将此 csv 文件读入以下类层次结构 我想最终得到一个列表MyClass
  • 阻止Winform最大化?

    我想防止我的桌面应用程序最大化 它不应该以任何方式最大化 通过双击标题栏 或通过单击键盘上的 Windows 向上箭头等 gt 我禁用了这两个最大化框 and 最小化框 gt 我还设置了最大尺寸 and 最小尺寸对于我的 WinForm仍然
  • NotSupportedException:LINQ to Entities 无法识别该方法[重复]

    这个问题在这里已经有答案了 我正在尝试使此查询与 EF 一起使用 但它抛出异常 var c ac Communities OrderBy o gt o Posts Count Skip page limit Take limit Selec
  • 如何找到锁的所有者(监视器)?

    有没有办法发现哪个线程当前拥有锁 具体来说 我正在寻找一些代码来打印出阻止锁定的线程 我想尝试锁定给定的超时时间 然后报告哪个线程正在阻止锁定 不需要 只需编写代码 private int lockOwner private object
  • 如何使用 C# 读取包含数组的 json 文件并对其执行 LINQ 查询? [复制]

    这个问题在这里已经有答案了 我是 C 中 json 的新手 我使用 newtonsoft json 我有一个包含数据 数组 的 json 文件 firstName Joyce lastName Huff isActive true age
  • 阻止 .NET 中给定应用程序的多个实例?

    在 NET 中 防止应用程序的多个实例同时运行的最佳方法是什么 如果没有 最佳 技术 那么每种解决方案需要考虑哪些注意事项 使用互斥体 上面使用 GetProcessesByName 的示例之一有许多注意事项 这是一篇关于这个主题的好文章
  • 在 VS.net 中获取 PDF 阅读器控制

    有没有什么方法可以在我们的 Visual Studio net 中获得 Adob e Reader 控件 而无需在我们的系统中安装 Adob e Reader WinForm 未安装 Acrobat Reader 的 PDF 查看器控件 h
  • 使用 .NET 加密和解密数字

    NET 使用 C 有哪些可用的加密技术 我有一个数值 我想将其加密为字符串表示形式 哪一款支持解密 加密 由 NET 框架 BCL 提供 而不是 C 语言提供 通常对字节进行加密 但那很好 数字很 容易表示为字节 并且输出字节可以通过以下方
  • system.web.http.HttpError 的.Net 标准/核心版本

    从 net Framework 迁移到 net Standard Core 时 我遇到了 HttpError 类 除了兼容性垫片之外 我在 net core standard 中找不到任何等效项 这只是一个临时解决方案 不知道官方有没有替代
  • 尝试创建 ssms 加载项时出现问题

    我正在尝试为 SSMS 2008 和 或 2008 R2 创建加载项 但我立即遇到了问题 我可以让我的加载项正常工作 并在 SSMS 启动时让它仅显示一个消息框 但是 下载各种代码示例后 当尝试引用 Microsoft SqlServer
  • 什么是组件对象模型 (COM)?它依赖于语言吗?

    我是 COM 的新手 我不知道它是什么 也不知道它为何存在 这是一种类似于 OOP 的编程方法吗 编程语言必须支持它吗 带有一些特殊的关键字什么的 当我问我的教授时 他说 COM 是一种执行 OOP 的二进制稳定方式 我们需要了解二进制布局
  • SOAP Web 服务的命名空间是否区分大小写?

    我尝试部署一个 Web 服务 并将其更改为一台机器 当我测试其中一个 Web 方法时 我收到一条错误消息 服务器无法识别 HTTP 标头 Soapaction 的值 我做了一些搜索问题 当命名空间存在差异时 似乎有时会发生该错误 我查看了我
  • JPG、DOC、PDF 等文件是否也编译成程序集?

    Q1 Does aspnet compiler exe将网站目录中包含的所有文件 甚至 JPG DOC 和 PDF 类型 编译成程序集 如果将图像添加到Web项目中的文件列表中 从而将它们添加到项目文件中 这些图像也会被VS编译成程序集吗
  • NHibernate:QueryOver<> 帮助

    我刚刚开始使用 NHibernate 在运行更复杂的查询时遇到了麻烦 我有带有附加标签列表的实体 用户将提供两个标签列表 包括和排除 我需要找到具有所有包含标签的所有实体 并排除在排除列表中具有任何标签的任何实体 下面是我的第一个努力 这显
  • GetReferencedAssemblies 不返回所有程序集

    我在表单中有以下代码 并试图找到一种方法来加载由名为的表单引用的项目程序集DataObjects 使用以下代码 我只列出了六个程序集 查看表单所在项目的引用 有十三个程序集引用 这里有什么问题吗 private void ListRefer
  • Like LINQ to Object 中的查询

    我有一份美国各州名单 List
  • 如何检查应用程序的 .NET 版本?

    除了在仅具有 NET Framework 版本 3 5 的计算机上运行之外 如何检查 NET 应用程序的版本 NET 框架版本控制在 NET 2 0 之后变为 foobar 一个应用程序的目标是CLR版本 它使用 EXE 的程序集元数据来实

随机推荐

  • 在 ng-repeat 中加载背景图像时显示加载屏幕

    我已经加载了一个列表ng repeat其中每个元素包含一个img标签 我想显示某种加载指示器 包括列表项 直到每个项目中的每个图像都完成加载 我想我需要加入角度广播的一些事件back img指令 但我真的不知道从哪里开始 好的 所以我解决了
  • 为多对多关系的组合设计 SQL 模式(产品的变体)

    我希望标题能有点帮助 我使用 MySQL 作为我的数据库 我正在构建产品数据库 但不确定如何处理产品变体的存储价格 SKU 产品可能有无限的变体 并且每个变体组合都有自己的价格 SKU 等 这就是我目前设置产品 变体表的方式 PRODUCT
  • Java字符串初始化

    你更偏向于哪个 为什么 String myString null if someCondition myString something else myString something else OR String myString if
  • 假货组件未生成

    我不知道我需要做什么才能生成假货 在我的测试项目中 我包含了对我想要伪造的程序集的引用 它将 Fakes fakes 添加到我的项目中并构建了该项目 有大量警告 但错误数为 0 并且构建成功完成 但它没有添加对生成的 Fakes 程序集的任
  • BATCH - 移动超过 5 分钟的文件

    我想制作一个移动可执行文件 时间超过5分钟 不知道如何比较文件的修改日期与系统日期 echo off for f in log do move nf log Procesados exit 一种方法是下载查找工具 http gnuwin32
  • 如何使用 Rails 3.0.x 配置 Log4r?

    我尝试根据这篇文章使用Rails 3 0 4配置log4r http www dansketcher com 2007 06 16 integrating log4r and ruby on rails http www dansketch
  • 使用统一的初始脉冲在抛物线路径上移动 2D 物理体

    我拥有的 Unity 5 2D 中的一个射弹 受重力影响 我想以抛物线路径上的初始冲量从 A 点移动到 B 点 我知道的 随机起始位置的二维坐标 A 随机目标位置的二维坐标 B 我希望身体到达目标位置的时间 X 我想知道的是 我必须一次向身
  • PHP 中包含太多文件会降低性能吗? [复制]

    这个问题在这里已经有答案了 可能的重复 包含函数文件的效率 在 PHP 中 https stackoverflow com questions 2106700 efficiency for including files of functi
  • SQL Server Reporting Services 2008 中的列和行分组

    这是我需要填充为报告的期望结果 其中 xx 是人数 我有一个表 其中包含以下字段 table1 id state year as Quarter gender 我需要根据 id 确定计数并填充为报告 年份类似于 20081 20082 20
  • 新手关于maven的问题

    我唯一需要关心的配置文件是吗 pom xml 在我看来 Java 人的生活xml比任何其他东西都重要 这是真的吗 Maven 使用 XML 作为 POM 文件 因为 XML 是描述事物的不错选择 而 POM 文件是描述一个项目的 我认为 M
  • Gstreamer:将 Matroska 视频转码为 mp4

    我们正在使用的硬件不支持播放 mkv 文件 所以我需要将 Matroska mkv 视频文件转码为 mp4 视频文件 正如我从网上提供的转码材料中了解到的 我需要执行以下操作 使用分离不同的 mkv 文件流矩阵卡多路复用器元素 使用可用的
  • 寻求有关首次 SAML 实施的反馈

    我的任务是设计一个非常简单的 SSO 单点登录 流程 我的雇主指定它应该在 SAML 中实施 我想创建绝对尽可能简单的消息 同时确认 SAML 规范 如果你们中的一些人能查看我的请求和回复消息并告诉我它们是否对我的目的有意义 如果它们包含以
  • MySQL:动态添加列到查询结果

    我有这张表 update id project id content date 1 1 text 2011 12 20 22 10 30 2 2 text 2011 12 20 22 10 30 3 2 text 2011 12 21 22
  • ASCX自定义控件中CSS规则应该放在哪里?

    我是 ASP NET 的新手 但我正在开发一个自定义控件 该控件内部有一个多视图控件 可以显示一堆不同的内容 其中一些是使用 JQuery UI 元素 如选项卡和手风琴 显示的 这些元素将有相当多的自定义 由于我将拥有许多仅适用于自定义控件
  • WordUtils.capitalize 的替代品? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用大写字符串中的每个单词WordUtils capitalize String 因为它正是我
  • Jquery .show() 不显示具有隐藏可见性的 div

    基本的 jQuery 问题 我试图揭示一个div已使用 jQuery 将其标记为隐藏 但我不太明白 我在这里创建了一个 JSFiddle http jsfiddle net VwjxJ http jsfiddle net VwjxJ 基本上
  • Android:显示错误的屏幕分辨率

    我试图使用此代码获取 Android 手机的屏幕分辨率 DisplayMetrics dm new DisplayMetrics getWindowManager getDefaultDisplay getMetrics dm str Sc
  • 如何从 Windows 批处理文件发送简单的电子邮件?

    我正在运行 Windows 2003 Service Pack 2 我有一个按需运行的批处理文件 我希望每次运行批处理文件时都会发送一封电子邮件 邮件很简单 就是一句话表明批处理文件运行了 每次都是一样的 我尝试了几件事来完成这件事 我想到
  • 如何使用 std::ifstream 读取 UTF-8 编码的文本文件?

    我很难解析 xml 文件 文件以 UTF 8 编码保存 普通 ASCII 可以正确读取 但韩文字符则不能 所以我做了一个简单的程序来读取UTF 8文本文件并打印内容 文本文件 test txt ABC 测试程序 include
  • 通过非通用 IDictionary 枚举时,无法将通用字典项 Cast() 到 DictionaryEntry

    我有一些迭代非泛型的代码IDictionary http msdn microsoft com en us library system collections idictionary aspx首先调用 LINQCast http msdn