Attribute Třída

Definice

Představuje základní třídu pro vlastní atributy.Represents the base class for custom attributes.

public ref class Attribute abstract : System::Runtime::InteropServices::_Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
type Attribute = class
    interface _Attribute
Public MustInherit Class Attribute
Implements _Attribute
Dědičnost
Attribute
Odvozené
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje použití Attribute.The following code example demonstrates the usage of Attribute.

using namespace System;
using namespace System::Reflection;

// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum class Animal
{
    // Pets.
    Dog = 1,
    Cat, Bird
};

// A custom attribute to allow a target to have a pet.
public ref class AnimalTypeAttribute: public Attribute
{
public:

    // The constructor is called when the attribute is set.
    AnimalTypeAttribute( Animal pet )
    {
        thePet = pet;
    }


protected:

    // Keep a variable internally ...
    Animal thePet;

public:

    property Animal Pet 
    {
        // .. and show a copy to the outside world.
        Animal get()
        {
            return thePet;
        }

        void set( Animal value )
        {
            thePet = value;
        }
    }
};

// A test class where each method has its own pet.
ref class AnimalTypeTestClass
{
public:

    [AnimalType(Animal::Dog)]
    void DogMethod(){}


    [AnimalType(Animal::Cat)]
    void CatMethod(){}

    [AnimalType(Animal::Bird)]
    void BirdMethod(){}

};

int main()
{
    AnimalTypeTestClass^ testClass = gcnew AnimalTypeTestClass;
    Type^ type = testClass->GetType();

    // Iterate through all the methods of the class.
    System::Collections::IEnumerator^ myEnum = 
        type->GetMethods()->GetEnumerator();
    while ( myEnum->MoveNext() )
    {
        MethodInfo^ mInfo = safe_cast<MethodInfo^>(myEnum->Current);

        // Iterate through all the Attributes for each method.
        System::Collections::IEnumerator^ myEnum1 = 
            Attribute::GetCustomAttributes( mInfo )->GetEnumerator();
        while ( myEnum1->MoveNext() )
        {
            Attribute^ attr = safe_cast<Attribute^>(myEnum1->Current);

            // Check for the AnimalType attribute.
            if ( attr->GetType() == AnimalTypeAttribute::typeid )
                Console::WriteLine( "Method {0} has a pet {1} attribute.", 
                mInfo->Name, (dynamic_cast<AnimalTypeAttribute^>(attr))->Pet );
        }
    }
}

/*
 * Output:
 * Method DogMethod has a pet Dog attribute.
 * Method CatMethod has a pet Cat attribute.
 * Method BirdMethod has a pet Bird attribute.
 */
using System;
using System.Reflection;

// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum Animal {
    // Pets.
    Dog = 1,
    Cat,
    Bird,
}

// A custom attribute to allow a target to have a pet.
public class AnimalTypeAttribute : Attribute {
    // The constructor is called when the attribute is set.
    public AnimalTypeAttribute(Animal pet) {
        thePet = pet;
    }

    // Keep a variable internally ...
    protected Animal thePet;

    // .. and show a copy to the outside world.
    public Animal Pet {
        get { return thePet; }
        set { thePet = value; }
    }
}

// A test class where each method has its own pet.
class AnimalTypeTestClass {
    [AnimalType(Animal.Dog)]
    public void DogMethod() {}

    [AnimalType(Animal.Cat)]
    public void CatMethod() {}

    [AnimalType(Animal.Bird)]
    public void BirdMethod() {}
}

class DemoClass {
    static void Main(string[] args) {
        AnimalTypeTestClass testClass = new AnimalTypeTestClass();
        Type type = testClass.GetType();
        // Iterate through all the methods of the class.
        foreach(MethodInfo mInfo in type.GetMethods()) {
            // Iterate through all the Attributes for each method.
            foreach (Attribute attr in
                Attribute.GetCustomAttributes(mInfo)) {
                // Check for the AnimalType attribute.
                if (attr.GetType() == typeof(AnimalTypeAttribute))
                    Console.WriteLine(
                        "Method {0} has a pet {1} attribute.",
                        mInfo.Name, ((AnimalTypeAttribute)attr).Pet);
            }

        }
    }
}
/*
 * Output:
 * Method DogMethod has a pet Dog attribute.
 * Method CatMethod has a pet Cat attribute.
 * Method BirdMethod has a pet Bird attribute.
 */
Imports System.Reflection

Public Module CustomAttrVB

    ' An enumeration of animals. Start at 1 (0 = uninitialized).
    Public Enum Animal
        ' Pets
        Dog = 1
        Cat
        Bird
    End Enum

    ' Visual Basic requires the AttributeUsage be specified.
    ' A custom attribute to allow a target to have a pet.
    <AttributeUsage(AttributeTargets.Method)> _
    Public Class AnimalTypeAttribute
        Inherits Attribute

        ' The constructor is called when the attribute is set.
        Public Sub New(ByVal animal As Animal)
            Me.thePet = animal
        End Sub

        ' Keep a variable internally ...
        Protected thePet As Animal

        ' .. and show a copy to the outside world.
        Public Property Pet() As Animal
            Get
                Return thePet
            End Get
            Set(ByVal Value As Animal)
                thePet = Value
            End Set
        End Property

    End Class

    ' A test class where each method has its own pet.
    Class AnimalTypeTestClass

        <AnimalType(Animal.Dog)> _
        Public Sub DogMethod()
        End Sub

        <AnimalType(Animal.Cat)> _
        Public Sub CatMethod()
        End Sub

        <AnimalType(Animal.Bird)> _
        Public Sub BirdMethod()
        End Sub
    End Class

    ' The runtime test.
    Sub Main()
        Dim testClass As New AnimalTypeTestClass()
        Dim tcType As Type = testClass.GetType()
        Dim mInfo As MethodInfo
        ' Iterate through all the methods of the class.
        For Each mInfo In tcType.GetMethods()
            Dim attr As Attribute
            ' Iterate through all the attributes of the method.
            For Each attr In Attribute.GetCustomAttributes(mInfo)
                If TypeOf attr Is AnimalTypeAttribute Then
                    Dim attrCustom As AnimalTypeAttribute = _
                        CType(attr, AnimalTypeAttribute)
                    Console.WriteLine("Method {0} has a pet {1} attribute.", _
                         mInfo.Name(), attrCustom.Pet.ToString())
                End If
            Next
        Next
    End Sub
End Module

' Output:
' Method DogMethod has a pet Dog attribute.
' Method CatMethod has a pet Cat attribute.
' Method BirdMethod has a pet Bird attribute.

Poznámky

Třída Attribute přidruží předdefinované systémové informace nebo uživatelsky definované vlastní informace k cílovému elementu.The Attribute class associates predefined system information or user-defined custom information with a target element. Cílový element může být sestavení, třída, konstruktor, delegát, výčet, událost, pole, rozhraní, metoda, soubor přenosného spustitelného souboru, parametr, vlastnost, návratová hodnota, struktura nebo jiný atribut.A target element can be an assembly, class, constructor, delegate, enum, event, field, interface, method, portable executable file module, parameter, property, return value, struct, or another attribute.

Informace poskytované atributem se také označují jako metadata.Information provided by an attribute is also known as metadata. Metadata lze prozkoumat v době běhu aplikace za běhu za účelem řízení, jak program zpracovává data, nebo před spuštěním pomocí externích nástrojů, které určují, jak se aplikace sama zpracovává nebo udržuje.Metadata can be examined at run time by your application to control how your program processes data, or before run time by external tools to control how your application itself is processed or maintained. Například .NET Framework předdefinovány a používá typy atributů k řízení chování za běhu a některé programovací jazyky používají typy atributů k reprezentaci funkcí jazyka, které nejsou přímo podporovány .NET Framework Common Type System.For example, the .NET Framework predefines and uses attribute types to control run-time behavior, and some programming languages use attribute types to represent language features not directly supported by the .NET Framework common type system.

Všechny typy atributů jsou odvozeny přímo nebo nepřímo z třídy Attribute.All attribute types derive directly or indirectly from the Attribute class. Atributy lze použít pro jakýkoliv cílový element; u stejného elementu Target lze použít více atributů; atributy a lze dědit pomocí elementu odvozeného z cílového prvku.Attributes can be applied to any target element; multiple attributes can be applied to the same target element; and attributes can be inherited by an element derived from a target element. Použijte třídu AttributeTargets k určení cílového prvku, na který je atribut použit.Use the AttributeTargets class to specify the target element to which the attribute is applied.

Třída Attribute poskytuje pohodlný způsob načítání a testování vlastních atributů.The Attribute class provides convenient methods to retrieve and test custom attributes. Další informace o použití atributů naleznete v tématu použití atributů a atributů.For more information about using attributes, see Applying Attributes and Attributes.

Konstruktory

Attribute()

Inicializuje novou instanci třídy Attribute.Initializes a new instance of the Attribute class.

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.Returns a value that indicates whether this instance is equal to a specified object.

GetCustomAttribute(Assembly, Type)

Načte vlastní atribut aplikovaný na zadané sestavení.Retrieves a custom attribute applied to a specified assembly. Parametry určují sestavení a typ vlastního atributu, který chcete vyhledat.Parameters specify the assembly and the type of the custom attribute to search for.

GetCustomAttribute(Assembly, Type, Boolean)

Načte vlastní atribut aplikovaný na sestavení.Retrieves a custom attribute applied to an assembly. Parametry určují sestavení, typ vlastního atributu, který chcete vyhledat, a možnost ignorování hledání.Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttribute(MemberInfo, Type)

Načte vlastní atribut aplikovaný na člena typu.Retrieves a custom attribute applied to a member of a type. Parametry určují člena a typ vlastního atributu, který chcete vyhledat.Parameters specify the member, and the type of the custom attribute to search for.

GetCustomAttribute(MemberInfo, Type, Boolean)

Načte vlastní atribut aplikovaný na člena typu.Retrieves a custom attribute applied to a member of a type. Parametry určují člena, typ vlastního atributu, který se má vyhledat, a jestli se mají prohledávat nadřazené členy.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttribute(Module, Type)

Načte vlastní atribut aplikovaný na modul.Retrieves a custom attribute applied to a module. Parametry určují modul a typ vlastního atributu, který chcete vyhledat.Parameters specify the module, and the type of the custom attribute to search for.

GetCustomAttribute(Module, Type, Boolean)

Načte vlastní atribut aplikovaný na modul.Retrieves a custom attribute applied to a module. Parametry určují modul, typ vlastního atributu, který se má vyhledat, a možnost ignorování hledání.Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttribute(ParameterInfo, Type)

Načte vlastní atribut aplikovaný na parametr metody.Retrieves a custom attribute applied to a method parameter. Parametry určují parametr metody a typ vlastního atributu, který chcete vyhledat.Parameters specify the method parameter, and the type of the custom attribute to search for.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Načte vlastní atribut aplikovaný na parametr metody.Retrieves a custom attribute applied to a method parameter. Parametry určují parametr metody, typ vlastního atributu, který se má vyhledat, a zda se mají hledat předchůdce parametru metody.Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

GetCustomAttributes(Assembly)

Načte pole vlastních atributů použitých pro sestavení.Retrieves an array of the custom attributes applied to an assembly. Parametr určuje sestavení.A parameter specifies the assembly.

GetCustomAttributes(Assembly, Boolean)

Načte pole vlastních atributů použitých pro sestavení.Retrieves an array of the custom attributes applied to an assembly. Parametry určují sestavení a možnost ignorováného hledání.Parameters specify the assembly, and an ignored search option.

GetCustomAttributes(Assembly, Type)

Načte pole vlastních atributů použitých pro sestavení.Retrieves an array of the custom attributes applied to an assembly. Parametry určují sestavení a typ vlastního atributu, který chcete vyhledat.Parameters specify the assembly, and the type of the custom attribute to search for.

GetCustomAttributes(Assembly, Type, Boolean)

Načte pole vlastních atributů použitých pro sestavení.Retrieves an array of the custom attributes applied to an assembly. Parametry určují sestavení, typ vlastního atributu, který chcete vyhledat, a možnost ignorování hledání.Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttributes(MemberInfo)

Načte pole vlastních atributů použitých pro člena typu.Retrieves an array of the custom attributes applied to a member of a type. Parametr určuje člena.A parameter specifies the member.

GetCustomAttributes(MemberInfo, Boolean)

Načte pole vlastních atributů použitých pro člena typu.Retrieves an array of the custom attributes applied to a member of a type. Parametry určují člena, typ vlastního atributu, který se má vyhledat, a jestli se mají prohledávat nadřazené členy.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttributes(MemberInfo, Type)

Načte pole vlastních atributů použitých pro člena typu.Retrieves an array of the custom attributes applied to a member of a type. Parametry určují člena a typ vlastního atributu, který chcete vyhledat.Parameters specify the member, and the type of the custom attribute to search for.

GetCustomAttributes(MemberInfo, Type, Boolean)

Načte pole vlastních atributů použitých pro člena typu.Retrieves an array of the custom attributes applied to a member of a type. Parametry určují člena, typ vlastního atributu, který se má vyhledat, a jestli se mají prohledávat nadřazené členy.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttributes(Module)

Načte pole vlastních atributů použitých pro modul.Retrieves an array of the custom attributes applied to a module. Parametr určuje modul.A parameter specifies the module.

GetCustomAttributes(Module, Boolean)

Načte pole vlastních atributů použitých pro modul.Retrieves an array of the custom attributes applied to a module. Parametry určují modul a možnost ignorováného hledání.Parameters specify the module, and an ignored search option.

GetCustomAttributes(Module, Type)

Načte pole vlastních atributů použitých pro modul.Retrieves an array of the custom attributes applied to a module. Parametry určují modul a typ vlastního atributu, který chcete vyhledat.Parameters specify the module, and the type of the custom attribute to search for.

GetCustomAttributes(Module, Type, Boolean)

Načte pole vlastních atributů použitých pro modul.Retrieves an array of the custom attributes applied to a module. Parametry určují modul, typ vlastního atributu, který se má vyhledat, a možnost ignorování hledání.Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttributes(ParameterInfo)

Načte pole vlastních atributů použitých pro parametr metody.Retrieves an array of the custom attributes applied to a method parameter. Parametr určuje parametr metody.A parameter specifies the method parameter.

GetCustomAttributes(ParameterInfo, Boolean)

Načte pole vlastních atributů použitých pro parametr metody.Retrieves an array of the custom attributes applied to a method parameter. Parametry určují parametr metody a zda mají být prohledány nadřazené parametry parametru metody.Parameters specify the method parameter, and whether to search ancestors of the method parameter.

GetCustomAttributes(ParameterInfo, Type)

Načte pole vlastních atributů použitých pro parametr metody.Retrieves an array of the custom attributes applied to a method parameter. Parametry určují parametr metody a typ vlastního atributu, který chcete vyhledat.Parameters specify the method parameter, and the type of the custom attribute to search for.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Načte pole vlastních atributů použitých pro parametr metody.Retrieves an array of the custom attributes applied to a method parameter. Parametry určují parametr metody, typ vlastního atributu, který se má vyhledat, a zda se mají hledat předchůdce parametru metody.Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

GetHashCode()

Vrátí kód hash této instance.Returns the hash code for this instance.

GetType()

Získá Type aktuální instance.Gets the Type of the current instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

IsDefined(Assembly, Type)

Určuje, zda jsou pro sestavení aplikovány vlastní atributy.Determines whether any custom attributes are applied to an assembly. Parametry určují sestavení a typ vlastního atributu, který chcete vyhledat.Parameters specify the assembly, and the type of the custom attribute to search for.

IsDefined(Assembly, Type, Boolean)

Určuje, zda jsou pro sestavení aplikovány vlastní atributy.Determines whether any custom attributes are applied to an assembly. Parametry určují sestavení, typ vlastního atributu, který chcete vyhledat, a možnost ignorování hledání.Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

IsDefined(MemberInfo, Type)

Určuje, zda jsou některé vlastní atributy aplikovány na člen typu.Determines whether any custom attributes are applied to a member of a type. Parametry určují člena a typ vlastního atributu, který chcete vyhledat.Parameters specify the member, and the type of the custom attribute to search for.

IsDefined(MemberInfo, Type, Boolean)

Určuje, zda jsou některé vlastní atributy aplikovány na člen typu.Determines whether any custom attributes are applied to a member of a type. Parametry určují člena, typ vlastního atributu, který se má vyhledat, a jestli se mají prohledávat nadřazené členy.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

IsDefined(Module, Type)

Určuje, zda jsou pro modul aplikovány vlastní atributy zadaného typu.Determines whether any custom attributes of a specified type are applied to a module. Parametry určují modul a typ vlastního atributu, který chcete vyhledat.Parameters specify the module, and the type of the custom attribute to search for.

IsDefined(Module, Type, Boolean)

Určuje, zda jsou pro modul aplikovány vlastní atributy.Determines whether any custom attributes are applied to a module. Parametry určují modul, typ vlastního atributu, který se má vyhledat, a možnost ignorování hledání.Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

IsDefined(ParameterInfo, Type)

Určuje, zda jsou některé vlastní atributy aplikovány na parametr metody.Determines whether any custom attributes are applied to a method parameter. Parametry určují parametr metody a typ vlastního atributu, který chcete vyhledat.Parameters specify the method parameter, and the type of the custom attribute to search for.

IsDefined(ParameterInfo, Type, Boolean)

Určuje, zda jsou některé vlastní atributy aplikovány na parametr metody.Determines whether any custom attributes are applied to a method parameter. Parametry určují parametr metody, typ vlastního atributu, který se má vyhledat, a zda se mají hledat předchůdce parametru metody.Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda je tato instance rovna zadanému objektu.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

MemberwiseClone()

Vytvoří kopii aktuálního Objectbez podstruktury.Creates a shallow copy of the current Object.

(Zděděno od Object)
ToString()

Vrací řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Zděděno od Object)

Explicitní implementace rozhraní

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.Maps a set of names to a corresponding set of dispatch identifiers.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu pro objekt, který lze použít k získání informací o typu pro rozhraní.Retrieves the type information for an object, which can be used to get the type information for an interface.

_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.Provides access to properties and methods exposed by an object.

Platí pro

Bezpečný přístup z více vláken

Tento typ je bezpečný pro přístup z více vláken.This type is thread safe.

Viz také