FilterByType - filtering the results of Type.FindMembers by thier return type
' Accept only properties and methods whose return value matches
' the Type passed as the second argument.
' Note: it requires Imports System.Reflection
Function FilterByType(ByVal m As MemberInfo, ByVal filterCriteria As Object) As _
Boolean
If m.MemberType = MemberTypes.Property Then
' If it is a property, cast MemberInfo to PropertyInfo.
Dim pi As PropertyInfo = CType(m, PropertyInfo)
' Return True if the property type is the one we're looking for.
Return (pi.PropertyType Is filterCriteria)
ElseIf m.MemberType = MemberTypes.Method Then
' If it is a method, cast MemberInfo to MethodInfo.
Dim mi As MethodInfo = CType(m, MethodInfo)
' Return True if the return type is the one we're looking for.
Return (mi.ReturnType Is filterCriteria)
End If
End Function
' EXAMPLE:
' Get a reference to the System.String type.
Dim stringType As Type = Type.GetType("System.String")
Dim minfos() As MemberInfo
' We're looking for properties and functions that return a 32-bit integer.
Dim returnType As Type = Type.GetType("System.Int32")
' We're searching only public, non-shared methods and properties.
minfos = stringType.FindMembers( MemberTypes.Method Or MemberTypes.Property, _
BindingFlags.Public Or BindingFlags.Instance, AddressOf FilterByType, _
returnType)
Dim mi As MemberInfo
For Each mi In minfos
Debug.WriteLine(mi.Name)
Next
' Note: This code is taken from Francesco Balena's
' "Programming Microsoft Visual Basic .NET" - MS Press 2002, ISBN 0735613753
' You can read a free chapter of the book at
' http://www.vb2themax.com/HtmlDoc.asp?Table=Books&ID=101000