我有一个可枚举集合的ISymbol对象,需要获取基础类型。
e.g。
List<int> intList;
对于intList我有ISymbol,需要找到底层类型 - 在这种情况下,它是int。
我尝试使用列出的代码here,但似乎反射在这里不起作用。
这是我的代码段:
private Type GetUnderlyingTypeFromEnumerable(ISymbol symbol)
{
Type eType = null;
Type[] interfaces = symbol.GetType().GetInterfaces();
foreach (Type i in interfaces)
if (i.IsGenericType && i.GetGenericTypeDefinition().Equals(typeof(IEnumerable<>)))
{
eType = i.GetGenericArguments()[0];
break;
}
return eType;
}
答案 0 :(得分:0)
谢谢大家。我在INamedTypeSymbol界面附近撬了一下,找到了解决这个问题的简单方法:
private ITypeSymbol GetUnderlyingTypeFromEnumerable(INamedTypeSymbol symbol)
{
return symbol.TypeArguments.First();
}