从 System.Collections.Generic.Dictionary`2[System.Object,System.Object] 读取数据

Posted

技术标签:

【中文标题】从 System.Collections.Generic.Dictionary`2[System.Object,System.Object] 读取数据【英文标题】:Read Data From System.Collections.Generic.Dictionary`2[System.Object,System.Object] 【发布时间】:2015-02-17 19:01:06 【问题描述】:

我正在努力从 IDictionary 中读取数据,非常感谢一些帮助。当它只是一个对象数组时,我已经提取了我需要的其他数据,但我现在有一个 KeyValuePair 需要处理。当我尝试将其转换为 KeyValuePair 时,我得到一个 InvalidCastException,所以我这样做是为了尝试查找类型:

var test = plist["CFBundleIcons"];
MessageBox.Show(test.GetType().ToString());

返回System.Collections.Generic.Dictionary`2[System.Object,System.Object]。我的第一个问题是 2 是什么意思?我以前用过字典,以前从未见过。

如果它有助于进一步了解我的主要问题,我在下面附上了当地人视图的屏幕截图 - 我正在尝试阅读图标名称。提前致谢。

【问题讨论】:

2 是 Dictionary 类中泛型参数的计数。 【参考方案1】:

这就是 .NET 使用两个类型参数对泛型类型名称进行编码的方式。 plist["CFBundleIcons"]Dictionary<object, object>。因此,与其将其转换为 KeyValuePair,不如将​​其转换为正确的类型。

【讨论】:

非常感谢!我已经改变了演员阵容,它终于又可以工作了。【参考方案2】:

这就是 CLR 对泛型类型名称进行编码的方式。 `2表示类型中的类型参数个数。

在 C# 术语中,这是Dictionary<object, object>

【讨论】:

感谢您的帮助!我已经修复了演员表,现在可以正常工作了。

以上是关于从 System.Collections.Generic.Dictionary`2[System.Object,System.Object] 读取数据的主要内容,如果未能解决你的问题,请参考以下文章

C# Equals

C#学习笔记2

WPF中哪种组件可以实现以下文字显示效果

从 NIB 与从代码加载自定义滑块:从代码加载时不存在子视图

如何从其他面板从 JTextField 获取输入

从PRISM开始学WPFMVVMViewModel?