다음 예제에서는 LINQ를 리플렉션과 함께 사용하여 지정된 검색 조건과 일치하는 메서드에 대한 특정 메타데이터를 검색하는 방법을 보여 줍니다. 이 경우 쿼리는 어셈블리에서 배열과 같은 열거 가능한 형식을 반환하는 모든 메서드의 이름을 찾습니다.
예시
Imports System.Linq
Imports System.Reflection
Module Module1
Sub Main()
Dim asmbly As Assembly =
Assembly.Load("System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken= b77a5c561934e089")
Dim pubTypesQuery = From type In asmbly.GetTypes()
Where type.IsPublic
From method In type.GetMethods()
Where method.ReturnType.IsArray = True
Let name = method.ToString()
Let typeName = type.ToString()
Group name By typeName Into methodNames = Group
Console.WriteLine("Getting ready to iterate")
For Each item In pubTypesQuery
Console.WriteLine(item.methodNames)
For Each type In item.methodNames
Console.WriteLine(" " & type)
Next
Next
Console.WriteLine("Press any key to exit... ")
Console.ReadKey()
End Sub
End Module
이 예제에서는 Assembly.GetTypes 메서드를 사용하여 지정된 어셈블리의 형식 배열을 반환합니다. Where 절 필터는 공용 형식만 반환되도록 적용됩니다. 각 공용 형식에 대해 하위 쿼리는 MethodInfo 호출에서 반환되는 Type.GetMethods 배열을 사용하여 생성됩니다. 이러한 결과는 반환 형식이 배열이거나 IEnumerable<T>구현하는 형식인 메서드만 반환하도록 필터링됩니다. 마지막으로, 이러한 결과는 형식 이름을 키로 사용하여 그룹화됩니다.
참고하십시오
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET