这将帮助您进行反射迭代。
IDictionary<int, string> t;
bool t.GetType().IsGenericType
Type[] t.GetType().GetGenericArguments()
// you can do foreach here and see again if type is generic
您可以创建一个帮助方法,首先测试类型是否为泛型,然后检查泛型参数类型。这不仅会测试泛型字典,还会测试任何具有泛型参数的类型。IList、KeyValuePair 等
public static bool IsType(Type inputType, Type targetType)
{
if (inputType.IsGenericType)
{
Type[] genericArgs = inputType.GetGenericArguments();
var foundType = false;
foreach (var item in genericArgs)
{
if (IsType(item, targetType))
foundType = true;
}
return foundType;
}
return inputType.IsAssignableFrom(targetType);
}