Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB7
Expertise: Intermediate
Nov 4, 2002

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 _

    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

' 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, _

Dim mi As MemberInfo
For Each mi In minfos

' 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
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date