2011-10-21 2 views
6

IList 인터페이스에 ICollection이 필요하다는 것을 프로그래밍 방식으로 결정하는 방법 (리플렉션 또는 다른 방법)이 있습니까? 차례로 IEnumerable이 필요합니까?프로그래밍 방식으로 인터페이스 요구 사항/종속성/상속을 결정할 수 있습니까?

저는 reflection library에서 일하고 있으며이 정보를 사용할 수 있지만 얻을 방법이 없다는 것을 알았습니다. 컴파일러와 IDE (분명히)는 관계를 알고 있으므로 어떻게 든 사용할 수 있어야합니다.

IL이나 소스 파싱을 포함하지 않는 제안을 원합니다. 어느 쪽도 실제로 사용 사례에 대한 옵션이 아닙니다.

+0

COM 개체가이 작업을 수행 할 수 있습니다. – VoidStar

답변

4

Type.GetInterfaces을 사용하면이 정보를 찾을 수 있습니다. 파워 쉘 이하

+0

Doh! 감사합니다. 잠시 동안 작업하지 않으면 얼마나 빨리 잊어 버릴 수 있는지 보여줍니다. –

+0

사실 재귀가 필요하지 않은 것처럼 보입니다. 필요한 모든 인터페이스가있는 배열을 얻습니다. –

+0

@MortenMertner : ... 첫 번째 댓글의 유효성을 한 번 더 확인합니다 .-) – Jon

1

예 :

PS C:\> [collections.ilist].getinterfaces() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  False ICollection 
True  False IEnumerable 

C#의 것과 동일 할 것이다 : typeof(IList).GetInterfaces().

관련 문제