MemberInfo.GetCustomAttributes Método

Definición

Cuando se reemplaza en una clase derivada, devuelve atributos personalizados aplicados a este miembro.

Sobrecargas

Nombre Description
GetCustomAttributes(Boolean)

Cuando se reemplaza en una clase derivada, devuelve una matriz de todos los atributos personalizados aplicados a este miembro.

GetCustomAttributes(Type, Boolean)

Cuando se reemplaza en una clase derivada, devuelve una matriz de atributos personalizados aplicados a este miembro y identificados por Type.

GetCustomAttributes(Boolean)

Source:
MemberInfo.cs
Source:
MemberInfo.cs
Source:
MemberInfo.cs
Source:
MemberInfo.cs
Source:
MemberInfo.cs

Cuando se reemplaza en una clase derivada, devuelve una matriz de todos los atributos personalizados aplicados a este miembro.

public:
 abstract cli::array <System::Object ^> ^ GetCustomAttributes(bool inherit);
public abstract object[] GetCustomAttributes(bool inherit);
abstract member GetCustomAttributes : bool -> obj[]
Public MustOverride Function GetCustomAttributes (inherit As Boolean) As Object()

Parámetros

inherit
Boolean

true para buscar la cadena de herencia de este miembro para buscar los atributos; de lo contrario, false. Este parámetro se omite para propiedades y eventos.

Devoluciones

Object[]

Matriz que contiene todos los atributos personalizados aplicados a este miembro o una matriz con cero elementos si no se define ningún atributo.

Implementaciones

Excepciones

Este miembro pertenece a un tipo que se carga en el contexto de solo reflexión. Vea Cómo: Cargar ensamblados en el contexto de Reflection-Only.

No se pudo cargar un tipo de atributo personalizado.

Ejemplos

En el ejemplo siguiente se define un atributo personalizado y se asocia el atributo a MyClass.MyMethod, se recupera el atributo en tiempo de ejecución y se muestra el resultado.

using System;
using System.Reflection;

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

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

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

            // Display the attributes for each of the members of MyClass1.
            for(int i = 0; i < myMembers.Length; i++)
            {
                Object[] myAttributes = myMembers[i].GetCustomAttributes(true);
                if(myAttributes.Length > 0)
                {
                    Console.WriteLine("\nThe attributes for the member {0} are: \n", myMembers[i]);
                    for(int j = 0; j < myAttributes.Length; j++)
                        Console.WriteLine("The type of the attribute is {0}.", myAttributes[j]);
                }
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("An exception occurred: {0}", e.Message);
        }
    }
}
Imports System.Reflection

' Define a custom attribute with one named parameter.
<AttributeUsage(AttributeTargets.All)> Public Class MyAttribute
    Inherits Attribute
    Private myName As String

    Public Sub New(ByVal name As String)
        myName = name
    End Sub

    Public ReadOnly Property Name() As String
        Get
            Return myName
        End Get
    End Property
End Class

' Define a class that has the custom attribute associated with one of its members.
Public Class MyClass1

    <MyAttribute("This is an example attribute.")> Public Sub MyMethod(ByVal i As Integer)
        Return
    End Sub
End Class


Public Class MemberInfo_GetCustomAttributes

    Public Shared Sub Main()
        Try
            ' Get the type of MyClass1.
            Dim myType As Type = GetType(MyClass1)
            ' Get the members associated with MyClass1.
            Dim myMembers As MemberInfo() = myType.GetMembers()

            ' Display the attributes for each of the members of MyClass1.
            Dim i As Integer
            For i = 0 To myMembers.Length - 1
                Dim myAttributes As [Object]() = myMembers(i).GetCustomAttributes(False)
                If myAttributes.Length > 0 Then
                    Console.WriteLine("The attributes for the member {0} are: ", myMembers(i))
                    Dim j As Integer
                    For j = 0 To myAttributes.Length - 1
                        Console.WriteLine("The type of the attribute is: {0}", myAttributes(j))
                    Next j
                End If
            Next i
        Catch e As Exception
            Console.WriteLine("An exception occurred: {0}.", e.Message)
        End Try
    End Sub
End Class

Comentarios

Este método omite el inherit parámetro de propiedades y eventos. Para buscar atributos en las propiedades y eventos de la cadena de herencia, use las sobrecargas adecuadas del Attribute.GetCustomAttributes método .

Consulte también

Se aplica a

GetCustomAttributes(Type, Boolean)

Source:
MemberInfo.cs
Source:
MemberInfo.cs
Source:
MemberInfo.cs
Source:
MemberInfo.cs
Source:
MemberInfo.cs

Cuando se reemplaza en una clase derivada, devuelve una matriz de atributos personalizados aplicados a este miembro y identificados por Type.

public:
 abstract cli::array <System::Object ^> ^ GetCustomAttributes(Type ^ attributeType, bool inherit);
public abstract object[] GetCustomAttributes(Type attributeType, bool inherit);
abstract member GetCustomAttributes : Type * bool -> obj[]
Public MustOverride Function GetCustomAttributes (attributeType As Type, inherit As Boolean) As Object()

Parámetros

attributeType
Type

Tipo de atributo que se va a buscar. Solo se devuelven los atributos que se pueden asignar a este tipo.

inherit
Boolean

true para buscar la cadena de herencia de este miembro para buscar los atributos; de lo contrario, false. Este parámetro se omite para propiedades y eventos.

Devoluciones

Object[]

Matriz de atributos personalizados aplicados a este miembro o una matriz con cero elementos si no se han aplicado atributos a los que attributeType se puede asignar.

Implementaciones

Excepciones

No se puede cargar un tipo de atributo personalizado.

Si attributeType es null.

Este miembro pertenece a un tipo que se carga en el contexto de solo reflexión. Vea Cómo: Cargar ensamblados en el contexto de Reflection-Only.

Ejemplos

En el ejemplo siguiente se define una clase denominada BaseClass que tiene dos miembros no heredados: un campo estático de subproceso denominado total y un método no conforme a CLS denominado MethodA. Una clase denominada DerivedClass hereda de BaseClass e invalida su MethodA método. Tenga en cuenta que no se aplican atributos a los miembros de DerivedClass. En el ejemplo se iteran los miembros de DerivedClass para determinar si el CLSCompliantAttribute atributo o ThreadStaticAttribute tal como se les ha aplicado. Dado inherit que es true, el método busca en la jerarquía de DerivedClass herencia del atributo especificado. Como se muestra en la salida del ejemplo, el total campo está decorado con el ThreadStaticAttribute atributo y el MethodA método está decorado con el CLSCompliantAttribute atributo .

using System;

public class BaseClass
{
   [ThreadStatic] public int total;

   [CLSCompliant(false)] public virtual uint MethodA()
   {
      return (uint) 100;
   }
}

public class DerivedClass : BaseClass
{
   public override uint MethodA()
   {
      total++;
      return 200;
   }
}

public class Example
{
   public static void Main()
   {
      Type t = typeof(DerivedClass);
      Console.WriteLine("Members of {0}:", t.FullName);
      foreach (var m in t.GetMembers())
      {
         bool hasAttribute = false;
         Console.Write("   {0}: ", m.Name);
         if (m.GetCustomAttributes(typeof(CLSCompliantAttribute), true).Length > 0) {
            Console.Write("CLSCompliant");
            hasAttribute = true;
         }
         if (m.GetCustomAttributes(typeof(ThreadStaticAttribute), true).Length > 0) {
            Console.Write("ThreadStatic");
            hasAttribute = true;
         }
         if (!hasAttribute)
            Console.Write("No attributes");

         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       Members of DerivedClass:
//          MethodA: CLSCompliant
//          ToString: No attributes
//          Equals: No attributes
//          GetHashCode: No attributes
//          typeof: No attributes
//          .ctor: No attributes
//          total: ThreadStatic
Public Class BaseClass
   <ThreadStatic> Public total As Integer
   
   <CLSCompliant(False)> Public Overridable Function MethodA() As UInt32
      Return CUInt(100)
   End Function
End Class

Public Class DerivedClass : Inherits BaseClass
   Public Overrides Function MethodA() As UInt32
      total += 1
      Return 200
   End Function
End Class

Module Example
   Public Sub Main()
      Dim t As Type = GetType(DerivedClass)
      Console.WriteLine("Members of {0}:", t.FullName)
      For Each m In t.GetMembers()
         Dim hasAttribute As Boolean = False
         Console.Write("   {0}: ", m.Name)
         If m.GetCustomAttributes(GetType(CLSCompliantAttribute), True).Length > 0 Then
            Console.Write("CLSCompliant")
            hasAttribute = True
         End If
         If m.GetCustomAttributes(GetType(ThreadStaticAttribute), True).Length > 0 Then
            Console.Write("ThreadStatic")
            hasAttribute = True
         End If
         If Not hasAttribute Then
            Console.Write("No attributes")
         End If
         Console.WriteLine()
      Next
   End Sub
End Module
' The example displays the following output:
'       Members of DerivedClass:
'          MethodA: CLSCompliant
'          ToString: No attributes
'          Equals: No attributes
'          GetHashCode: No attributes
'          GetType: No attributes
'          .ctor: No attributes
'          total: ThreadStatic

Comentarios

Este método omite el inherit parámetro de propiedades y eventos. Para buscar atributos en las propiedades y eventos de la cadena de herencia, use las sobrecargas adecuadas del Attribute.GetCustomAttributes método .

Se aplica a