Afficher en anglais

Partage via


Attribute.GetCustomAttributes Méthode

Définition

Récupère un tableau des attributs personnalisés appliqués à un paramètre assembly, module, membre de type ou méthode.

Surcharges

GetCustomAttributes(ParameterInfo, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et indiquent s’il faut rechercher les ancêtres du paramètre de méthode.

GetCustomAttributes(MemberInfo, Type, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Les paramètres spécifient le membre, le type de l’attribut personnalisé à rechercher et s’il faut rechercher des ancêtres du membre.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode, le type de l’attribut personnalisé à rechercher et s’il faut rechercher des ancêtres du paramètre de méthode.

GetCustomAttributes(Module, Type, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un module. Les paramètres spécifient le module, le type de l’attribut personnalisé à rechercher et une option de recherche ignorée.

GetCustomAttributes(MemberInfo, Type)

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Les paramètres spécifient le membre et le type de l’attribut personnalisé à rechercher.

GetCustomAttributes(Assembly, Type, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l’assembly, le type de l’attribut personnalisé à rechercher et une option de recherche ignorée.

GetCustomAttributes(Module, Type)

Récupère un tableau des attributs personnalisés appliqués à un module. Les paramètres spécifient le module et le type de l’attribut personnalisé à rechercher.

GetCustomAttributes(ParameterInfo, Type)

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et le type de l’attribut personnalisé à rechercher.

GetCustomAttributes(MemberInfo, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Les paramètres spécifient le membre, le type de l’attribut personnalisé à rechercher et s’il faut rechercher des ancêtres du membre.

GetCustomAttributes(Assembly, Type)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l’assembly et le type de l’attribut personnalisé à rechercher.

GetCustomAttributes(Assembly, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l’assembly et une option de recherche ignorée.

GetCustomAttributes(ParameterInfo)

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Un paramètre spécifie le paramètre de méthode.

GetCustomAttributes(Module)

Récupère un tableau des attributs personnalisés appliqués à un module. Un paramètre spécifie le module.

GetCustomAttributes(MemberInfo)

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Un paramètre spécifie le membre.

GetCustomAttributes(Assembly)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Un paramètre spécifie l’assembly.

GetCustomAttributes(Module, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un module. Les paramètres spécifient le module et une option de recherche ignorée.

GetCustomAttributes(ParameterInfo, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et indiquent s’il faut rechercher les ancêtres du paramètre de méthode.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element, bool inherit);

Paramètres

element
ParameterInfo

Objet dérivé de la classe ParameterInfo qui décrit un paramètre d’un membre d’une classe.

inherit
Boolean

Si true, spécifie également de rechercher des attributs personnalisés dans les ancêtres de element.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

La propriété Member de element est null.

element est null.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un ParameterInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

Remarques

Si element représente un paramètre dans une méthode d’un type dérivé, la valeur de retour inclut les attributs personnalisés hérités appliqués au même paramètre dans les méthodes de base substituées.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(MemberInfo, Type, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Les paramètres spécifient le membre, le type de l’attribut personnalisé à rechercher et s’il faut rechercher des ancêtres du membre.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type type, bool inherit);
C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type attributeType, bool inherit);

Paramètres

element
MemberInfo

Objet dérivé de la classe MemberInfo qui décrit un constructeur, un événement, un champ, une méthode ou un membre de propriété d’une classe.

typeattributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

inherit
Boolean

Si true, spécifie également de rechercher des attributs personnalisés dans les ancêtres de element.

Retours

Tableau Attribute qui contient les attributs personnalisés de type type appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou type est null.

type n’est pas dérivé de Attribute.

element n’est pas un constructeur, une méthode, une propriété, un événement, un type ou un champ.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un MemberInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

Remarques

La valeur de retour contient les attributs personnalisés pour les ancêtres de element si inherit est true.

Remarque

À compter de .NET Framework version 2.0, cette méthode retourne des attributs de sécurité sur les méthodes, les constructeurs et les types si les attributs sont stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 ou ultérieure utilisent le nouveau format. Les assemblys dynamiques et les assemblys compilés avec les versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez émission d’attributs de sécurité déclaratifs.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(ParameterInfo, Type, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode, le type de l’attribut personnalisé à rechercher et s’il faut rechercher des ancêtres du paramètre de méthode.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element, Type attributeType, bool inherit);

Paramètres

element
ParameterInfo

Objet dérivé de la classe ParameterInfo qui décrit un paramètre d’un membre d’une classe.

attributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

inherit
Boolean

Si true, spécifie également de rechercher des attributs personnalisés dans les ancêtres de element.

Retours

Tableau Attribute qui contient les attributs personnalisés de type attributeType appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou attributeType est null.

attributeType n’est pas dérivé de Attribute.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un ParameterInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

Remarques

Si element représente un paramètre dans une méthode d’un type dérivé, la valeur de retour inclut les attributs personnalisés hérités appliqués au même paramètre dans les méthodes de base substituées.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Module, Type, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un module. Les paramètres spécifient le module, le type de l’attribut personnalisé à rechercher et une option de recherche ignorée.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element, Type attributeType, bool inherit);

Paramètres

element
Module

Objet dérivé de la classe Module qui décrit un fichier exécutable portable.

attributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

inherit
Boolean

Ce paramètre est ignoré et n’affecte pas l’opération de cette méthode.

Retours

Tableau Attribute qui contient les attributs personnalisés de type attributeType appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou attributeType est null.

attributeType n’est pas dérivé de Attribute.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un Module en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

Remarques

La valeur de retour contient les attributs personnalisés pour les ancêtres de element si inherit est true.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(MemberInfo, Type)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Les paramètres spécifient le membre et le type de l’attribut personnalisé à rechercher.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type type);
C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type attributeType);

Paramètres

element
MemberInfo

Objet dérivé de la classe MemberInfo qui décrit un constructeur, un événement, un champ, une méthode ou un membre de propriété d’une classe.

typeattributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

Retours

Tableau Attribute qui contient les attributs personnalisés de type type appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou type est null.

type n’est pas dérivé de Attribute.

element n’est pas un constructeur, une méthode, une propriété, un événement, un type ou un champ.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttribute, en prenant un MemberInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

Remarques

La valeur de retour contient les attributs personnalisés pour les ancêtres de element.

Remarque

À compter de .NET Framework version 2.0, cette méthode retourne des attributs de sécurité sur les méthodes, les constructeurs et les types si les attributs sont stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 ou ultérieure utilisent le nouveau format. Les assemblys dynamiques et les assemblys compilés avec les versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez émission d’attributs de sécurité déclaratifs.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Assembly, Type, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l’assembly, le type de l’attribut personnalisé à rechercher et une option de recherche ignorée.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element, Type attributeType, bool inherit);

Paramètres

element
Assembly

Objet dérivé de la classe Assembly qui décrit une collection réutilisable de modules.

attributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

inherit
Boolean

Ce paramètre est ignoré et n’affecte pas l’opération de cette méthode.

Retours

Tableau Attribute qui contient les attributs personnalisés de type attributeType appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou attributeType est null.

attributeType n’est pas dérivé de Attribute.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un Assembly en tant que paramètre.

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

Remarques

Remarque

À compter de .NET Framework version 2.0, cette méthode retourne des attributs de sécurité si les attributs sont stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 ou ultérieure utilisent le nouveau format. Les assemblys dynamiques et les assemblys compilés avec les versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez émission d’attributs de sécurité déclaratifs.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Module, Type)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un module. Les paramètres spécifient le module et le type de l’attribut personnalisé à rechercher.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element, Type attributeType);

Paramètres

element
Module

Objet dérivé de la classe Module qui décrit un fichier exécutable portable.

attributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

Retours

Tableau Attribute qui contient les attributs personnalisés de type attributeType appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou attributeType est null.

attributeType n’est pas dérivé de Attribute.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un Module en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(ParameterInfo, Type)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et le type de l’attribut personnalisé à rechercher.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element, Type attributeType);

Paramètres

element
ParameterInfo

Objet dérivé de la classe ParameterInfo qui décrit un paramètre d’un membre d’une classe.

attributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

Retours

Tableau Attribute qui contient les attributs personnalisés de type attributeType appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou attributeType est null.

attributeType n’est pas dérivé de Attribute.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un ParameterInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

Remarques

Si element représente un paramètre dans une méthode d’un type dérivé, la valeur de retour inclut les attributs personnalisés hérités appliqués au même paramètre dans les méthodes de base substituées.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(MemberInfo, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Les paramètres spécifient le membre, le type de l’attribut personnalisé à rechercher et s’il faut rechercher des ancêtres du membre.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, bool inherit);

Paramètres

element
MemberInfo

Objet dérivé de la classe MemberInfo qui décrit un constructeur, un événement, un champ, une méthode ou un membre de propriété d’une classe.

inherit
Boolean

Si true, spécifie également de rechercher des attributs personnalisés dans les ancêtres de element.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element est null.

element n’est pas un constructeur, une méthode, une propriété, un événement, un type ou un champ.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un MemberInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

Remarques

La valeur de retour contient les attributs personnalisés pour les ancêtres de element si inherit est true.

Remarque

À compter de .NET Framework version 2.0, cette méthode retourne des attributs de sécurité sur les méthodes, les constructeurs et les types si les attributs sont stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 ou ultérieure utilisent le nouveau format. Les assemblys dynamiques et les assemblys compilés avec les versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez émission d’attributs de sécurité déclaratifs.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Assembly, Type)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l’assembly et le type de l’attribut personnalisé à rechercher.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element, Type attributeType);

Paramètres

element
Assembly

Objet dérivé de la classe Assembly qui décrit une collection réutilisable de modules.

attributeType
Type

Type, ou type de base, de l’attribut personnalisé à rechercher.

Retours

Tableau Attribute qui contient les attributs personnalisés de type attributeType appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element ou attributeType est null.

attributeType n’est pas dérivé de Attribute.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un Assembly en tant que paramètre.

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

Remarques

Remarque

À compter de .NET Framework version 2.0, cette méthode retourne des attributs de sécurité si les attributs sont stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 ou ultérieure utilisent le nouveau format. Les assemblys dynamiques et les assemblys compilés avec les versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez émission d’attributs de sécurité déclaratifs.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Assembly, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l’assembly et une option de recherche ignorée.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element, bool inherit);

Paramètres

element
Assembly

Objet dérivé de la classe Assembly qui décrit une collection réutilisable de modules.

inherit
Boolean

Ce paramètre est ignoré et n’affecte pas l’opération de cette méthode.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element est null.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un Assembly en tant que paramètre.

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(ParameterInfo)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un paramètre de méthode. Un paramètre spécifie le paramètre de méthode.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element);

Paramètres

element
ParameterInfo

Objet dérivé de la classe ParameterInfo qui décrit un paramètre d’un membre d’une classe.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element est null.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un ParameterInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

Remarques

Si element représente un paramètre dans une méthode d’un type dérivé, la valeur de retour inclut les attributs personnalisés hérités appliqués au même paramètre dans les méthodes de base substituées.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Module)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un module. Un paramètre spécifie le module.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element);

Paramètres

element
Module

Objet dérivé de la classe Module qui décrit un fichier exécutable portable.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element est null.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un Module en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(MemberInfo)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un membre d’un type. Un paramètre spécifie le membre.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element);

Paramètres

element
MemberInfo

Objet dérivé de la classe MemberInfo qui décrit un constructeur, un événement, un champ, une méthode ou un membre de propriété d’une classe.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element est null.

element n’est pas un constructeur, une méthode, une propriété, un événement, un type ou un champ.

Impossible de charger un type d’attribut personnalisé.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttribute, en prenant un MemberInfo en tant que paramètre.

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

Remarques

La valeur de retour contient les attributs personnalisés pour les ancêtres de element.

Remarque

À compter de .NET Framework version 2.0, cette méthode retourne des attributs de sécurité sur les méthodes, les constructeurs et les types si les attributs sont stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 ou ultérieure utilisent le nouveau format. Les assemblys dynamiques et les assemblys compilés avec les versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez émission d’attributs de sécurité déclaratifs.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Assembly)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un assembly. Un paramètre spécifie l’assembly.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element);

Paramètres

element
Assembly

Objet dérivé de la classe Assembly qui décrit une collection réutilisable de modules.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element est null.

Exemples

L’exemple suivant récupère les attributs personnalisés trouvés dans l’assembly actuel.

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

Remarques

Remarque

À compter de .NET Framework version 2.0, cette méthode retourne des attributs de sécurité si les attributs sont stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 ou ultérieure utilisent le nouveau format. Les assemblys dynamiques et les assemblys compilés avec les versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez émission d’attributs de sécurité déclaratifs.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

GetCustomAttributes(Module, Boolean)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

Récupère un tableau des attributs personnalisés appliqués à un module. Les paramètres spécifient le module et une option de recherche ignorée.

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element, bool inherit);

Paramètres

element
Module

Objet dérivé de la classe Module qui décrit un fichier exécutable portable.

inherit
Boolean

Ce paramètre est ignoré et n’affecte pas l’opération de cette méthode.

Retours

Tableau Attribute qui contient les attributs personnalisés appliqués à element, ou un tableau vide s’il n’existe aucun attribut personnalisé de ce type.

Exceptions

element est null.

Exemples

L’exemple de code suivant illustre l’utilisation de GetCustomAttributes, en prenant un Module en tant que paramètre.

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

Remarques

La valeur de retour contient les attributs personnalisés pour les ancêtres de element si inherit est true.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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