Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 从ICollection中获取泛型类型_Dictionary_Generics_Reflection - Fatal编程技术网

Dictionary 从ICollection中获取泛型类型

Dictionary 从ICollection中获取泛型类型,dictionary,generics,reflection,Dictionary,Generics,Reflection,我正在使用以下方法,但在字典上,它返回TKey。 Dictionary实现了ICollection那么如何获取 KeyValuePair 公共静态类型GetCollectionGenericType(此类型) { foreach(Type.GetInterfaces()中的类型interfaceType) { if(interfaceType.IsGenericType&& interfaceType.GetGenericTypeDefinition()==typeof(ICollection)

我正在使用以下方法,但在
字典
上,它返回
TKey
Dictionary
实现了
ICollection
那么如何获取
KeyValuePair

公共静态类型GetCollectionGenericType(此类型)
{
foreach(Type.GetInterfaces()中的类型interfaceType)
{
if(interfaceType.IsGenericType&&
interfaceType.GetGenericTypeDefinition()==typeof(ICollection))
{
返回类型。GetGenericArguments()[0];
}
}
返回null;
}

字典
的第一个通用参数是
TKey
,这就是代码返回的值。您必须更改代码,以获得正在循环的
interfaceType
的第一个通用参数

public static Type GetCollectionGenericType( Type type )
{
    foreach( Type interfaceType in type.GetInterfaces() )
    {
        if( interfaceType.IsGenericType && interfaceType.GetGenericTypeDefinition() == typeof( ICollection<> ) )
        {
            return interfaceType.GetGenericArguments()[ 0 ];
        }
    }
    return null;
}
公共静态类型GetCollectionGenericType(类型类型)
{
foreach(Type.GetInterfaces()中的类型interfaceType)
{
if(interfaceType.IsGenericType&&interfaceType.GetGenericTypeDefinition()==typeof(ICollection))
{
返回interfaceType.GetGenericArguments()[0];
}
}
返回null;
}
public static Type GetCollectionGenericType( Type type )
{
    foreach( Type interfaceType in type.GetInterfaces() )
    {
        if( interfaceType.IsGenericType && interfaceType.GetGenericTypeDefinition() == typeof( ICollection<> ) )
        {
            return interfaceType.GetGenericArguments()[ 0 ];
        }
    }
    return null;
}