【问题标题】:Read Data From System.Collections.Generic.Dictionary`2[System.Object,System.Object]从 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 类中泛型参数的计数。

标签: c#


【解决方案1】:

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

【讨论】:

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

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

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

【讨论】:

  • 感谢您的帮助!我已经修复了演员表,现在可以正常工作了。
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 2020-03-17
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多