Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
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 _
    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
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap