Ler em inglês

Partilhar via


MemberInfo.IsDefined(Type, Boolean) Método

Definição

Quando substituído em uma classe derivada, indica se um ou mais atributos do tipo especificado ou de seus tipos derivados são aplicados a esse membro.

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

Parâmetros

attributeType
Type

O tipo de atributo personalizado a ser pesquisado. A pesquisa inclui tipos derivados.

inherit
Boolean

true para pesquisar a cadeia de herança desse membro para encontrar os atributos; caso contrário, false. Esse parâmetro é ignorado para propriedades e eventos.

Retornos

true se uma ou mais instâncias de attributeType ou qualquer um de seus tipos derivados for aplicado a esse membro; caso contrário, false.

Implementações

Exemplos

O exemplo a seguir determina se o atributo especificado é aplicado ao membro 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);
        }
    }
}

Comentários

Esse método ignora o inherit parâmetro para propriedades e eventos. Para pesquisar atributos em propriedades e eventos na cadeia de herança, use as sobrecargas apropriadas do Attribute.IsDefined método .

Nota

No .NET Framework versão 2.0, esse método retornará true se um tipo, método ou construtor tiver atributos de segurança armazenados no novo formato de metadados. Assemblies compilados com a versão 2.0 usam esse formato. Assemblies dinâmicos e assemblies compilados com versões anteriores do .NET Framework usam o formato XML antigo. Consulte Emitindo atributos de segurança declarativos.

Aplica-se a

Produto Versões
.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