2014-09-13 3 views
1

나는 컬렉션 ICollection<T>을 얻었으며 "Where"메서드를 찾아야합니다. 내가 어떻게 할 수 있니? ICollection의 MethodInfo 가져 오기 <T>

나는이 같은 시도 :

System.Type type = typeof(ICollection<T>); 
MethodInfo info = type.GetGenericTypeDefinition().GetMethod("Where"); 

을했지만 작동하지 않습니다. 나는 당신의 Where 방법은 우선은 정적 Enumerable 클래스의 메소드를 얻어야한다 ICollection<T>에 정의되지 않은 ICollection<T> 나누었다의 종류를 얻을 수

typeof(ICollection<>); 

필요가 동적 표현

답변

0

을 작성해야합니다.

3

따라서 그렇지 인터페이스 자체에 있지만 Enumerable 클래스의, 확장 방법이다 :

typeof(Enumerable).GetMethods("Where", BindingFlags.Static | BindingFlags.Public) 

그런 다음 당신이 필요로하는 오버로드를 선택합니다.

+0

멋진데 어디서 (...) 정의가 많은 경우 어떻게 기능에 대한 모호한 적합성을 피할 수 있습니까? – Puchacz

+0

'Where'를 사용하여'GetMethods'의 결과를 걸러 낼 수 있습니다. 더 심각하게는 매개 변수 유형의 배열을 인수로 취하여 오버로드를 명확히하는'GetMethod' 오버로드를 사용할 수 있습니다. 찾고있는 과부하의 모든 매개 변수 유형을 전달하십시오. –

관련 문제