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;
}