Lire en anglais

Partager via


MemberInfo.IsDefined(Type, Boolean) Méthode

Définition

En cas de substitution dans une classe dérivée, indique si un ou plusieurs attributs du type spécifié ou de ses types dérivés sont appliqués à ce membre.

C#
public abstract bool IsDefined(Type attributeType, bool inherit);

Paramètres

attributeType
Type

Type de l'attribut personnalisé à rechercher. La recherche inclut les types dérivés.

inherit
Boolean

true pour rechercher la chaîne d’héritage de ce membre afin de trouver les attributs ; sinon, false. Ce paramètre est ignoré pour les propriétés et les événements.

Retours

true si une ou plusieurs instances de attributeType ou de l'un de ses types dérivés sont appliquées à ce membre ; sinon, false.

Implémente

Exemples

L’exemple suivant détermine si l’attribut spécifié est appliqué au membre spécifié.

C#
using System;
using System.Reflection;

// Define a custom attribute with one named parameter.
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
    private string myName;
    public MyAttribute(string name)
    {
        myName = name;
    }
    public string Name
    {
        get
        {
            return myName;
        }
    }
}

// Define a class that has the custom attribute associated with one of its members.
public class MyClass1
{
    [MyAttribute("This is an example attribute.")]
    public void MyMethod(int i)
    {
        return;
    }
}

public class MemberInfo_GetCustomAttributes_IsDefined
{
    public static void Main()
    {
        try
        {
            // Get the type of MyClass1.
            Type myType = typeof(MyClass1);
            // Get the members associated with MyClass1.
            MemberInfo[] myMembers = myType.GetMembers();

            // Display the attributes for each of the members of MyClass1.
            for(int i = 0; i < myMembers.Length; i++)
            {
                // Display the attribute if it is of type MyAttribute.
                if(myMembers[i].IsDefined(typeof(MyAttribute), false))
                {
                    Object[] myAttributes = myMembers[i].GetCustomAttributes(typeof(MyAttribute), false);
                    Console.WriteLine("\nThe attributes of type MyAttribute for the member {0} are: \n",
                        myMembers[i]);
                    for(int j = 0; j < myAttributes.Length; j++)
                        // Display the value associated with the attribute.
                        Console.WriteLine("The value of the attribute is : \"{0}\"",
                            ((MyAttribute)myAttributes[j]).Name);
                }
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("An exception occurred: {0}", e.Message);
        }
    }
}

Remarques

Cette méthode ignore le paramètre pour les inherit propriétés et les événements. Pour rechercher des attributs sur des propriétés et des événements dans la chaîne d’héritage, utilisez les surcharges appropriées de la Attribute.IsDefined méthode .

Note

Dans le .NET Framework version 2.0, cette méthode retourne true si un type, une méthode ou un constructeur a des attributs de sécurité stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 utilisent ce format. Les assemblys dynamiques et les assemblys compilés avec des versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez Émission d’attributs de sécurité déclaratifs.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1