从 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] 读取数据的主要内容,如果未能解决你的问题,请参考以下文章