2017-10-24 4 views
0

열거 형 컬렉션에 대한 ISymbol 개체가 있고 기본 형식을 가져와야합니다.ISymbol에서 IEnumerable 컬렉션의 기본 형식을 가져 오는 중

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

을 시도 코드 공유하십시오 : IList의 collName을 ... 당신이 할 수있는 - collName.GetType을() 기본 형식을 찾으십시오 –

+0

가능한 형식의 IEnumerable 에서 형식 가져 오기 (https://stackoverflow.com/questions/906499/getting-type-t-from-ienumert) – mitaness

답변

0

모두에게 감사 :

여기 내 코드입니다. 나는 INamedTypeSymbol 인터페이스 주위를 치러야하고이 문제를 해결하는 쉬운 방법을 발견

private ITypeSymbol GetUnderlyingTypeFromEnumerable(INamedTypeSymbol symbol) 
    { 
     return symbol.TypeArguments.First(); 
    }