c# Dictionary反射遍历所有,不显示泛型类型
时间: 2024-05-13 12:19:51 浏览: 109
使用泛型将数据表转换为集合
要遍历C#中Dictionary类型的所有键值对,您可以使用反射和泛型方法。以下是一个示例代码,可以遍历Dictionary类型的所有键值对,并打印出它们的值:
```csharp
Dictionary<string, int> myDictionary = new Dictionary<string, int>();
myDictionary.Add("apple", 1);
myDictionary.Add("banana", 2);
myDictionary.Add("cherry", 3);
Type dictionaryType = myDictionary.GetType();
if (dictionaryType.IsGenericType && dictionaryType.GetGenericTypeDefinition() == typeof(Dictionary<,>))
{
MethodInfo method = dictionaryType.GetMethod("GetEnumerator");
IEnumerator enumerator = (IEnumerator)method.Invoke(myDictionary, null);
while (enumerator.MoveNext())
{
KeyValuePair<string, int> pair = (KeyValuePair<string, int>)enumerator.Current;
Console.WriteLine(pair.Value);
}
}
```
在上面的代码中,我们首先获取了Dictionary对象的类型。然后,我们检查这个类型是否为泛型类型,并且它是否为Dictionary类型的泛型定义。接下来,我们获取Dictionary对象的GetEnumerator()方法的MethodInfo对象,并调用它。最后,我们可以使用while循环遍历Dictionary对象的所有键值对,并打印它们的值。
请注意,由于我们使用了泛型方法,因此我们必须知道Dictionary的键和值类型。在上面的示例中,我们使用了一个键类型为string,值类型为int的Dictionary对象。如果您要遍历不同类型的Dictionary对象,您需要相应地修改代码。
阅读全文