Leer en inglés

Compartir a través de


MemberInfo.IsDefined(Type, Boolean) Método

Definición

Cuando se reemplaza en una clase derivada, indica si se aplican a este miembro uno o más atributos del tipo especificado o de sus tipos derivados.

C#
public abstract bool IsDefined(Type attributeType, bool inherit);

Parámetros

attributeType
Type

Tipo de atributo personalizado que se va a buscar. La búsqueda incluye los tipos derivados.

inherit
Boolean

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

Devoluciones

Es true si se aplican una o más instancias de attributeType o alguno de sus tipos derivados a este miembro; de lo contrario, es false.

Implementaciones

Ejemplos

En el ejemplo siguiente se determina si el atributo especificado se aplica al miembro especificado.

C#
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_IsDefined
{
    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++)
            {
                // Display the attribute if it is of type MyAttribute.
                if(myMembers[i].IsDefined(typeof(MyAttribute), false))
                {
                    Object[] myAttributes = myMembers[i].GetCustomAttributes(typeof(MyAttribute), false);
                    Console.WriteLine("\nThe attributes of type MyAttribute for the member {0} are: \n",
                        myMembers[i]);
                    for(int j = 0; j < myAttributes.Length; j++)
                        // Display the value associated with the attribute.
                        Console.WriteLine("The value of the attribute is : \"{0}\"",
                            ((MyAttribute)myAttributes[j]).Name);
                }
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("An exception occurred: {0}", e.Message);
        }
    }
}

Comentarios

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

Nota

En la versión 2.0 de .NET Framework, este método devuelve true si un tipo, método o constructor tiene atributos de seguridad almacenados en el nuevo formato de metadatos. Los ensamblados compilados con la versión 2.0 usan este formato. Los ensamblados dinámicos y los ensamblados compilados con versiones anteriores de .NET Framework usan el formato XML anterior. Consulte Emisión de atributos de seguridad declarativos.

Se aplica a

Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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