devxlogo

FilterByType – filtering the results of Type.FindMembers by thier return type

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.ReflectionFunction 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 IfEnd 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 MemberInfoFor 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

devx-admin

Share the Post: