我正在努力从IDictionary中读取数据,并且非常感谢一些帮助。当它只是一个对象数组时,我已经提取了我需要的其他数据,但我现在有一个KeyValuePair可以处理。当我尝试将其转换为KeyValuePair时,我得到一个InvalidCastException,所以我这样做是为了尝试找到类型:
var test = plist["CFBundleIcons"];
MessageBox.Show(test.GetType().ToString());
返回 System.Collections.Generic.Dictionary`2 [System.Object,System.Object] 。我的第一个问题是2是什么意思?我过去曾使用过词典,之前从未见过这些词典。
如果它有助于进一步了解我的主要问题,我附上了本地视图的屏幕截图 - 我试图阅读图标名称。提前谢谢。
答案 0 :(得分:2)
这是CLR如何编码泛型类型名称。 `2
表示类型中类型参数的数量。
在C#术语中,这是Dictionary<object, object>
。
答案 1 :(得分:2)
这就是.NET如何使用两个类型参数对泛型类型的名称进行编码。 plist["CFBundleIcons"]
是Dictionary<object, object>
。因此,不应将其强制转换为KeyValuePair
,而应将其转换为正确的类型。