TypeFilter Delegate
Filters the classes represented in an array of Type objects.
Assembly: mscorlib (in mscorlib.dll)
[SerializableAttribute] [ComVisibleAttribute(true)] public delegate bool TypeFilter( Type^ m, Object^ filterCriteria )
Parameters
- m
-
Type:
System::Type^
The Type object to which the filter is applied.
- filterCriteria
-
Type:
System::Object^
An arbitrary object used to filter the list.
The TypeFilter delegate is used to filter a list of classes. Specifically, you use it to filter the classes represented in an array of Type objects. The Type::FindInterfaces method uses this delegate to filter the list of interfaces that it returns. Every derived class of Delegate and MulticastDelegate has a constructor and a DynamicInvoke method. See the Visual C++ code example given in the description for Delegate.
This example shows how to define a method matching the TypeFilter delegate prototype allowing you to use reflection to filter or return a subset of matching entries.
Imports System.Reflection ' This interface is defined in this assembly. Public Interface IBookRetailer Sub Purchase() Sub ApplyDiscount() End Interface ' This interface is also defined in this assembly. Public Interface IMusicRetailer Sub Purchase() End Interface ' This class implements three interfaces; ' Two are defined in this assembly. ' One is defined in another assembly. Public Class MyRetailer Implements IBookRetailer, IMusicRetailer, IComparable ' For demonstration purposes, this method returns nothing. Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo Return Nothing End Function ' For demonstration purposes only, this method does nothing. Public Sub ApplyDiscount() Implements IBookRetailer.ApplyDiscount End Sub ' For demonstration purposes only, this method does nothing. Public Sub Purchase() Implements IBookRetailer.Purchase End Sub ' For demonstration purposes only, this method does nothing. Public Sub Purchase1() Implements IMusicRetailer.Purchase End Sub End Class Module Module1 Sub Main() ' Find the interfaces defined by the MyRetailer class. Each interface found is passed to ' the TypeFilter method which checks if the interface is defined in the executing assembly. Dim retailerType As Type = GetType(MyRetailer) Dim interfaces() As Type = _ retailerType.FindInterfaces(AddressOf TypeFilter, retailerType.Assembly.GetName().ToString()) ' Show the interfaces that are defined in this assembly that are also implemented by MyRetailer. Console.WriteLine("MyRetailer implements the following interfaces (defined in this assembly):") For Each t In interfaces Console.WriteLine(" {0}", t.Name) Next End Sub ' This method is called by the FindInterfaces method. ' This method is called once per defined interface. Function TypeFilter(ByVal t As Type, ByVal filterCriteria As Object) As Boolean ' Return true if interface is defined in the same ' assembly identified by the filterCriteria object. Return t.Assembly.GetName().ToString() = CType(filterCriteria, String) End Function End Module ' The example displays the following output: ' MyRetailer implements the following interfaces (defined in this assembly): ' IBookRetailer ' IMusicRetailer
Available since 1.1