TypeFilter-Delegat
Filtert die in einem Array von Type-Objekten dargestellten Klassen.
Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Delegate Function TypeFilter ( _
m As Type, _
filterCriteria As Object _
) As Boolean
'Usage
Dim instance As New TypeFilter(AddressOf HandlerMethod)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate bool TypeFilter (
Type m,
Object filterCriteria
)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate bool TypeFilter (
Type^ m,
Object^ filterCriteria
)
/** @delegate */
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public delegate boolean TypeFilter (
Type m,
Object filterCriteria
)
JScript unterstützt die Verwendung von Delegaten, aber nicht die Deklaration von neuen Delegaten.
Parameter
- m
Das Type-Objekt, auf das der Filter angewendet wird.
- filterCriteria
Ein beliebiges Objekt zum Filtern der Liste.
Rückgabewert
true, um Type in die gefilterte Liste aufzunehmen, andernfalls false.
Hinweise
Mit dem TypeFilter-Delegaten wird eine Liste von Klassen gefiltert. Er wird insbesondere zum Filtern der in einem Array von Type-Objekten dargestellten Klassen verwendet. Die Type.FindInterfaces-Methode filtert mit diesem Delegaten die zurückgegebene Liste von Schnittstellen. Alle abgeleiteten Klassen von Delegate und MulticastDelegate verfügen über einen Konstruktor und eine DynamicInvoke-Methode. Informationen hierzu erhalten Sie in der Beschreibung von Delegate im Codebeispiel für Managed Extensions for C++.
Beispiel
In diesem Beispiel wird die Definition einer Methode veranschaulicht, die dem Prototyp des TypeFilter-Delegaten entspricht, sodass übereinstimmende Einträge mithilfe der Reflektion gefiltert oder als Teilmenge zurückgegeben werden können.
Imports system
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 four interfaces; two are defined in this assembly and two are defined in another assembly.
Public Class MyRetailer
Implements IBookRetailer, IMusicRetailer, IComparable, ICloneable
' For demonstration purposes, this method returns nothing; it just allows the code to compile.
Public Function Clone() As Object Implements System.ICloneable.Clone
Return Nothing
End Function
' For demonstration purposes, this method returns nothing; it just allows the code to compile.
Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
Return Nothing
End Function
' For demonstration purposes, this method returns nothing; it just allows the code to compile.
Public Sub ApplyDiscout() Implements IBookRetailer.ApplyDiscount
End Sub
' For demonstration purposes, this method returns nothing; it just allows the code to compile.
Public Sub Purchase() Implements IBookRetailer.Purchase
End Sub
' For demonstration purposes, this method returns nothing; it just allows the code to compile.
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 interfaces() As Type = _
GetType(MyRetailer).FindInterfaces(AddressOf TypeFilter, Assembly.GetExecutingAssembly().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):")
Dim t As Type
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 interface defined.
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
' Output will vary based on the contents of the C drive.
'
' This code produces the following output.
' MyRetailer implements the following interfaces (defined in this assembly):
' IBookRetailer
' IMusicRetailer
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
System.Reflection-Namespace
FindInterfaces
Object
Delegate
MulticastDelegate