Cette documentation est archivée et n’est pas conservée.

TypeFilter, délégué

Mise à jour : novembre 2007

Filtre les classes représentées dans un tableau d'objets Type.

Espace de noms :  System.Reflection
Assembly :  mscorlib (dans mscorlib.dll)

[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 ne prend pas en charge les délégués.

Paramètres

m
Type : System.Type

Objet Type auquel le filtre est appliqué.

filterCriteria
Type : System.Object

Objet arbitraire utilisé pour filtrer la liste.

Valeur de retour

Type : System.Boolean

true pour inclure le Type dans la liste filtrée ; sinon, false.

Le délégué TypeFilter est utilisé pour filtrer une liste de classes. Plus particulièrement, vous l'utilisez pour filtrer les classes représentées dans un tableau d'objets Type. La méthode Type.FindInterfaces utilise ce délégué pour filtrer la liste d'interfaces qu'elle retourne. Chaque classe dérivée de Delegate et de MulticastDelegate a un constructeur et une méthode DynamicInvoke. Consultez l'exemple de code Visual C++ donné dans la description de Delegate.

Cet exemple montre comment définir une méthode qui corresponde au prototype du délégué TypeFilter qui vous permettra d'utiliser la réflexion pour filtrer ou retourner un sous-ensemble d'éléments correspondants.

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


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0
Afficher: