Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Attribute.GetCustomAttributes (ParameterInfo, Type, Boolean)

 

Publicado: octubre de 2016

Recupera una matriz de los atributos personalizados aplicados a un parámetro de método. Los parámetros especifican el parámetro de método, el tipo de atributo personalizado para buscar y si se deben buscar los antecesores del parámetro del método.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static Attribute[] GetCustomAttributes(
	ParameterInfo element,
	Type attributeType,
	bool inherit
)

Parámetros

element
Type: System.Reflection.ParameterInfo

Un objeto derivado de la ParameterInfo clase que describe un parámetro de un miembro de una clase.

attributeType
Type: System.Type

El tipo o un tipo base, del atributo personalizado para buscar.

inherit
Type: System.Boolean

Si true, especifica que se busquen también los antecesores de element para los atributos personalizados.

Valor devuelto

Type: System.Attribute[]

Un Attribute matriz que contiene los atributos personalizados del tipo attributeType aplicado a element, o una matriz vacía si no existe ningún atributo personalizado.

Exception Condition
ArgumentNullException

El valor de element o attributeType es null.

ArgumentException

attributeType no se derive de Attribute.

TypeLoadException

No se puede cargar un tipo de atributo personalizado.

Si element representa un parámetro en un método de un tipo derivado, el valor devuelto incluye los atributos personalizados heredables aplicados al mismo parámetro en los métodos bases reemplazados.

En el ejemplo de código siguiente se muestra el uso de GetCustomAttributes, teniendo un ParameterInfo como un parámetro.

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 a description attribute.
 * The description is: "This argument is a ParamArray"
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 */

.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: