Lire en anglais

Partager via


Attribute.IsDefined Méthode

Définition

Détermine si des attributs personnalisés d'un type spécifié sont appliqués à un assembly, module, membre de type ou paramètre de méthode.

Surcharges

IsDefined(ParameterInfo, Type, Boolean)

Détermine si des attributs personnalisés sont 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 la recherche éventuelle des ancêtres du paramètre de méthode.

IsDefined(Module, Type, Boolean)

Détermine si des attributs personnalisés sont 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.

IsDefined(MemberInfo, Type, Boolean)

Détermine si des attributs personnalisés sont appliqués à un membre d'un type. Les paramètres spécifient le membre, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du membre.

IsDefined(Assembly, Type, Boolean)

Détermine si des attributs personnalisés sont 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.

IsDefined(MemberInfo, Type)

Détermine si des attributs personnalisés sont appliqués à un membre d'un type. Les paramètres spécifient le membre, et le type de l'attribut personnalisé à rechercher.

IsDefined(Module, Type)

Détermine si des attributs personnalisés d'un type spécifié sont appliqués à un module. Les paramètres spécifient le module, et le type de l'attribut personnalisé à rechercher.

IsDefined(Assembly, Type)

Détermine si des attributs personnalisés sont appliqués à un assembly. Les paramètres spécifient l'assembly et le type de l'attribut personnalisé à rechercher.

IsDefined(ParameterInfo, Type)

Détermine si des attributs personnalisés sont 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.

IsDefined(ParameterInfo, Type, Boolean)

Détermine si des attributs personnalisés sont 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 la recherche éventuelle des ancêtres du paramètre de méthode.

C#
public static bool IsDefined (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 la valeur est true, spécifie également de rechercher les ancêtres de element pour les attributs personnalisés.

Retours

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

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

element n'est pas une méthode, un constructeur ou un type.

Exemples

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

C#
using System;
using System.Reflection;

namespace IsDef5CS
{
    public class TestClass
    {
        // Assign a ParamArray attribute to the parameter using the keyword.
        public void Method1(params String[] args)
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // Get the ParameterInfo array for the method parameters.
            ParameterInfo[] pInfo = mInfo.GetParameters();
            if (pInfo != null)
            {
                // See if the ParamArray attribute is defined.
                bool isDef = Attribute.IsDefined(pInfo[0],
                                                 typeof(ParamArrayAttribute));
                // Display the result.
                Console.WriteLine("The ParamArray attribute {0} defined for " +
                                  "parameter {1} of method {2}.",
                                  isDef ? "is" : "is not",
                                  pInfo[0].Name,
                                  mInfo.Name);
            }
            else
                Console.WriteLine("The parameters information could " +
                            "not be retrieved for method {0}.", mInfo.Name);
        }
    }
}

/*
 * Output:
 * The ParamArray attribute is defined for parameter args of method Method1.
 */

S’applique à

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

IsDefined(Module, Type, Boolean)

Détermine si des attributs personnalisés sont 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 bool IsDefined (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é, mais cela n'affecte pas le fonctionnement de cette méthode.

Retours

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

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

Exemples

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

C#
using System;
using System.Diagnostics;

// Add the Debuggable attribute to the module.
[module:Debuggable(true, false)]
namespace IsDef2CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // See if the Debuggable attribute is defined for this module.
            bool isDef = Attribute.IsDefined(clsType.Module,
                typeof(DebuggableAttribute));
            // Display the result.
            Console.WriteLine("The Debuggable attribute {0} " +
                "defined for Module {1}.",
                isDef ? "is" : "is not",
                clsType.Module.Name);
            // If the attribute is defined, display the JIT settings.
            if (isDef)
            {
                // Retrieve the attribute itself.
                DebuggableAttribute dbgAttr = (DebuggableAttribute)
                    Attribute.GetCustomAttribute(clsType.Module,
                    typeof(DebuggableAttribute));
                if (dbgAttr != null)
                {
                    Console.WriteLine("JITTrackingEnabled is {0}.",
                        dbgAttr.IsJITTrackingEnabled);
                    Console.WriteLine("JITOptimizerDisabled is {0}.",
                        dbgAttr.IsJITOptimizerDisabled);
                }
                else
                    Console.WriteLine("The Debuggable attribute " +
                        "could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Debuggable attribute is defined for Module IsDef2CS.exe.
 * JITTrackingEnabled is True.
 * JITOptimizerDisabled is False.
 */

Remarques

Cette méthode ignore le inherit paramètre et ne recherche pas les ancêtres des element attributs personnalisés.

S’applique à

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

IsDefined(MemberInfo, Type, Boolean)

Détermine si des attributs personnalisés sont appliqués à un membre d'un type. Les paramètres spécifient le membre, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du membre.

C#
public static bool IsDefined (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, un type ou un membre de propriété d'une classe.

attributeType
Type

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

inherit
Boolean

Si la valeur est true, spécifie également de rechercher les ancêtres de element pour les attributs personnalisés.

Retours

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

attributeType 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.

Exemples

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

C#
using System;
using System.Reflection;

namespace IsDef4CS
{
    public class TestClass
    {
        // Assign the Obsolete attribute to a method.
        [Obsolete("This method is obsolete. Use Method2 instead.")]
        public void Method1()
        {}
        public void Method2()
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // See if the Obsolete attribute is defined for this method.
            bool isDef = Attribute.IsDefined(mInfo, typeof(ObsoleteAttribute));
            // Display the result.
            Console.WriteLine("The Obsolete Attribute {0} defined for {1} of class {2}.",
                isDef ? "is" : "is not", mInfo.Name, clsType.Name);
            // If it's defined, display the attribute's message.
            if (isDef)
            {
                ObsoleteAttribute obsAttr =
                                 (ObsoleteAttribute)Attribute.GetCustomAttribute(
                                                    mInfo, typeof(ObsoleteAttribute));
                if (obsAttr != null)
                    Console.WriteLine("The message is: \"{0}\".",
                        obsAttr.Message);
                else
                    Console.WriteLine("The message could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Obsolete Attribute is defined for Method1 of class TestClass.
 * The message is: "This method is obsolete. Use Method2 instead.".
 */

Remarques

Note

À compter de la .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 ou ultérieure utilisent le nouveau format. Les assemblys et assemblys dynamiques 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 7 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.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
.NET Standard 2.0, 2.1

IsDefined(Assembly, Type, Boolean)

Détermine si des attributs personnalisés sont 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 bool IsDefined (System.Reflection.Assembly element, Type attributeType, bool inherit);

Paramètres

element
Assembly

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

attributeType
Type

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

inherit
Boolean

Ce paramètre est ignoré, mais cela n'affecte pas le fonctionnement de cette méthode.

Retours

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

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

Exemples

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

C#
using System;
using System.Reflection;

// Add an AssemblyDescription attribute
[assembly: AssemblyDescription("A sample description")]
namespace IsDef1CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // Get the assembly object.
            Assembly assy = clsType.Assembly;
            // Store the assembly's name.
            String assyName = assy.GetName().Name;
            // See if the Assembly Description is defined.
            bool isdef = Attribute.IsDefined(assy,
                typeof(AssemblyDescriptionAttribute));
            if (isdef)
            {
                // Affirm that the attribute is defined.
                Console.WriteLine("The AssemblyDescription attribute " +
                    "is defined for assembly {0}.", assyName);
                // Get the description attribute itself.
                AssemblyDescriptionAttribute adAttr =
                    (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(
                    assy, typeof(AssemblyDescriptionAttribute));
                // Display the description.
                if (adAttr != null)
                    Console.WriteLine("The description is \"{0}\".",
                        adAttr.Description);
                else
                    Console.WriteLine("The description could not " +
                        "be retrieved.");
            }
            else
                Console.WriteLine("The AssemblyDescription attribute is not " +
                    "defined for assembly {0}.", assyName);
        }
    }
}

/*
 * Output:
 * The AssemblyDescription attribute is defined for assembly IsDef1CS.
 * The description is "A sample description".
 */

Remarques

Note

À compter de la .NET Framework version 2.0, cette méthode retourne true si l’assembly 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 ou ultérieure utilisent le nouveau format. Les assemblys et assemblys dynamiques 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 7 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.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
.NET Standard 2.0, 2.1

IsDefined(MemberInfo, Type)

Détermine si des attributs personnalisés sont 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 bool IsDefined (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, un type ou un membre de propriété d'une classe.

attributeType
Type

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

Retours

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

attributeType 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.

Exemples

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

C#
using System;
using System.Reflection;

namespace IsDef4CS
{
    public class TestClass
    {
        // Assign the Obsolete attribute to a method.
        [Obsolete("This method is obsolete. Use Method2 instead.")]
        public void Method1()
        {}
        public void Method2()
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // See if the Obsolete attribute is defined for this method.
            bool isDef = Attribute.IsDefined(mInfo, typeof(ObsoleteAttribute));
            // Display the result.
            Console.WriteLine("The Obsolete Attribute {0} defined for {1} of class {2}.",
                isDef ? "is" : "is not", mInfo.Name, clsType.Name);
            // If it's defined, display the attribute's message.
            if (isDef)
            {
                ObsoleteAttribute obsAttr =
                                 (ObsoleteAttribute)Attribute.GetCustomAttribute(
                                                    mInfo, typeof(ObsoleteAttribute));
                if (obsAttr != null)
                    Console.WriteLine("The message is: \"{0}\".",
                        obsAttr.Message);
                else
                    Console.WriteLine("The message could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Obsolete Attribute is defined for Method1 of class TestClass.
 * The message is: "This method is obsolete. Use Method2 instead.".
 */

Remarques

Les ancêtres de element sont recherchés pour rechercher des attributs personnalisés.

Note

À compter de la .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 ou ultérieure utilisent le nouveau format. Les assemblys et assemblys dynamiques 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 7 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.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
.NET Standard 2.0, 2.1

IsDefined(Module, Type)

Détermine si des attributs personnalisés d'un type spécifié sont appliqués à un module. Les paramètres spécifient le module, et le type de l'attribut personnalisé à rechercher.

C#
public static bool IsDefined (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

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

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

Exemples

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

C#
using System;
using System.Diagnostics;

// Add the Debuggable attribute to the module.
[module:Debuggable(true, false)]
namespace IsDef2CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // See if the Debuggable attribute is defined for this module.
            bool isDef = Attribute.IsDefined(clsType.Module,
                typeof(DebuggableAttribute));
            // Display the result.
            Console.WriteLine("The Debuggable attribute {0} " +
                "defined for Module {1}.",
                isDef ? "is" : "is not",
                clsType.Module.Name);
            // If the attribute is defined, display the JIT settings.
            if (isDef)
            {
                // Retrieve the attribute itself.
                DebuggableAttribute dbgAttr = (DebuggableAttribute)
                    Attribute.GetCustomAttribute(clsType.Module,
                    typeof(DebuggableAttribute));
                if (dbgAttr != null)
                {
                    Console.WriteLine("JITTrackingEnabled is {0}.",
                        dbgAttr.IsJITTrackingEnabled);
                    Console.WriteLine("JITOptimizerDisabled is {0}.",
                        dbgAttr.IsJITOptimizerDisabled);
                }
                else
                    Console.WriteLine("The Debuggable attribute " +
                        "could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Debuggable attribute is defined for Module IsDef2CS.exe.
 * JITTrackingEnabled is True.
 * JITOptimizerDisabled is False.
 */

Remarques

Les ancêtres de element ne sont pas recherchés pour les attributs personnalisés.

S’applique à

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

IsDefined(Assembly, Type)

Détermine si des attributs personnalisés sont appliqués à un assembly. Les paramètres spécifient l'assembly et le type de l'attribut personnalisé à rechercher.

C#
public static bool IsDefined (System.Reflection.Assembly element, Type attributeType);

Paramètres

element
Assembly

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

attributeType
Type

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

Retours

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

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

Exemples

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

C#
using System;
using System.Reflection;

// Add an AssemblyDescription attribute
[assembly: AssemblyDescription("A sample description")]
namespace IsDef1CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // Get the assembly object.
            Assembly assy = clsType.Assembly;
            // Store the assembly's name.
            String assyName = assy.GetName().Name;
            // See if the Assembly Description is defined.
            bool isdef = Attribute.IsDefined(assy,
                typeof(AssemblyDescriptionAttribute));
            if (isdef)
            {
                // Affirm that the attribute is defined.
                Console.WriteLine("The AssemblyDescription attribute " +
                    "is defined for assembly {0}.", assyName);
                // Get the description attribute itself.
                AssemblyDescriptionAttribute adAttr =
                    (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(
                    assy, typeof(AssemblyDescriptionAttribute));
                // Display the description.
                if (adAttr != null)
                    Console.WriteLine("The description is \"{0}\".",
                        adAttr.Description);
                else
                    Console.WriteLine("The description could not " +
                        "be retrieved.");
            }
            else
                Console.WriteLine("The AssemblyDescription attribute is not " +
                    "defined for assembly {0}.", assyName);
        }
    }
}

/*
 * Output:
 * The AssemblyDescription attribute is defined for assembly IsDef1CS.
 * The description is "A sample description".
 */

Remarques

Note

À compter de la .NET Framework version 2.0, cette méthode retourne true si l’assembly 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 ou ultérieure utilisent le nouveau format. Les assemblys et assemblys dynamiques 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 7 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.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
.NET Standard 2.0, 2.1

IsDefined(ParameterInfo, Type)

Détermine si des attributs personnalisés sont 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 bool IsDefined (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

Boolean

true si un attribut personnalisé de type attributeType est appliqué à element ; sinon, false.

Exceptions

element ou attributeType est null.

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

Exemples

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

C#
using System;
using System.Reflection;

namespace IsDef5CS
{
    public class TestClass
    {
        // Assign a ParamArray attribute to the parameter using the keyword.
        public void Method1(params String[] args)
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // Get the ParameterInfo array for the method parameters.
            ParameterInfo[] pInfo = mInfo.GetParameters();
            if (pInfo != null)
            {
                // See if the ParamArray attribute is defined.
                bool isDef = Attribute.IsDefined(pInfo[0],
                                                 typeof(ParamArrayAttribute));
                // Display the result.
                Console.WriteLine("The ParamArray attribute {0} defined for " +
                                  "parameter {1} of method {2}.",
                                  isDef ? "is" : "is not",
                                  pInfo[0].Name,
                                  mInfo.Name);
            }
            else
                Console.WriteLine("The parameters information could " +
                            "not be retrieved for method {0}.", mInfo.Name);
        }
    }
}

/*
 * Output:
 * The ParamArray attribute is defined for parameter args of method Method1.
 */

Remarques

Les ancêtres de element sont recherchés pour rechercher des attributs personnalisés.

S’applique à

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