Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

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

Recupera una matriz de los atributos personalizados aplicados a un miembro de un tipo. Los parámetros especifican el miembro, el tipo del atributo personalizado que se va a buscar y si se deben buscar los antecesores del miembro.

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

public static Attribute[] GetCustomAttributes(
	MemberInfo element,
	Type type,
	bool inherit
)

Parámetros

element
Tipo: System.Reflection.MemberInfo
Objeto derivado de la clase MemberInfo que describe un constructor, evento, campo, método o miembro de propiedad de una clase.
type
Tipo: System.Type
Tipo, o tipo base, del atributo personalizado que se va a buscar.
inherit
Tipo: System.Boolean
Si es true, especifica que se busquen también los atributos personalizados de los antecesores de element.

Valor devuelto

Tipo: System.Attribute[]
Una matriz de Attribute que contiene los atributos personalizados de tipo type aplicados a element o una matriz vacía si no existen dichos atributos personalizados.

ExcepciónCondición
ArgumentNullException

El valor de element o de type es null.

ArgumentException

type no se deriva de Attribute.

NotSupportedException

element no es un constructor, método, propiedad, evento, tipo o campo.

TypeLoadException

Un tipo de atributo personalizado no puede cargarse.

El valor devuelto contiene los atributos personalizados correspondientes a los antecesores de element si inherit es true.

NotaNota

A partir de .NET Framework 2.0, este método devuelve atributos de seguridad en métodos, constructores y tipos si los atributos se almacenan en el nuevo formato de metadatos. Los ensamblados compilados con la versión 2.0 o posterior utilizan el nuevo formato. Los ensamblados dinámicos y los ensamblados compilados con versiones anteriores de .NET Framework utilizan el formato XML antiguo. Vea Emitir atributos de seguridad declarativa.

En el siguiente código de ejemplo se muestra el uso de GetCustomAttributes, que toma MemberInfo como parámetro.


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.

*/



.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft