Attribute Třída

Definice

Představuje základní třídu pro vlastní atributy.

public ref class Attribute abstract
public ref class Attribute abstract : System::Runtime::InteropServices::_Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
public abstract class Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
type Attribute = class
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type Attribute = class
    interface _Attribute
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Attribute = class
    interface _Attribute
Public MustInherit Class 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

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.
 */
open System

// An enumeration of animals. Start at 1 (0 = uninitialized).
type Animal =
    | Dog = 1
    | Cat = 2
    | Bird = 3

// A custom attribute to allow a target to have a pet.
type AnimalTypeAttribute(pet) =
    inherit Attribute()
    member val Pet = pet with get, set

// A test class where each method has its own pet.
type AnimalTypeTestClass() =
    [<AnimalType(Animal.Dog)>]
    member _.DogMethod() = ()

    [<AnimalType(Animal.Cat)>]
    member _.CatMethod() = ()

    [<AnimalType(Animal.Bird)>]
    member _.BirdMethod() = ()

let testClass = AnimalTypeTestClass()
let clsType = testClass.GetType()
// Iterate through all the methods of the class.
for mInfo in clsType.GetMethods() do
    // Iterate through all the Attributes for each method.
    for attr in Attribute.GetCustomAttributes mInfo do
        // Check for the AnimalType attribute.
        if attr.GetType() = typeof<AnimalTypeAttribute> then
            printfn $"Method {mInfo.Name} has a pet {(attr :?> AnimalTypeAttribute).Pet} attribute."

// 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žuje předdefinované systémové informace nebo uživatelem definované vlastní informace k cílovému prvku. Cílový prvek může být sestavení, třída, konstruktor, delegát, výčet, událost, pole, rozhraní, metoda, modul přenosného spustitelného souboru, parametr, vlastnost, návratová hodnota, struktura nebo jiný atribut.

Informace poskytované atributem se označují také jako metadata. Metadata může za běhu zkoumat vaše aplikace, aby bylo možné řídit, jak váš program zpracovává data, nebo před spuštěním externími nástroji, které řídí, jak se vaše aplikace zpracovává nebo udržuje. Například .NET předdefinuje a používá typy atributů k řízení chování za běhu a některé programovací jazyky používají typy atributů k reprezentaci jazykových funkcí, které nejsou přímo podporovány systémem běžných typů .NET.

Všechny typy atributů jsou odvozeny přímo nebo nepřímo z Attribute třídy. Atributy lze použít na jakýkoli cílový prvek; více atributů lze použít na stejný cílový prvek; a atributy mohou být zděděny elementem odvozeným z cílového elementu. AttributeTargets Použijte třídu k určení cílového elementu, na který se atribut použije.

Třída Attribute poskytuje pohodlné metody pro načtení a testování vlastních atributů. Další informace o používání atributů najdete v tématu Použití atributů a atributů.

Konstruktory

Attribute()

Inicializuje novou instanci Attribute třídy .

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

GetCustomAttribute(Assembly, Type)

Načte vlastní atribut použitý na zadané sestavení. Parametry určují sestavení a typ vlastního atributu, který chcete vyhledat.

GetCustomAttribute(Assembly, Type, Boolean)

Načte vlastní atribut použitý na sestavení. Parametry určují sestavení, typ vlastního atributu, který chcete vyhledat, a ignorovanou možnost hledání.

GetCustomAttribute(MemberInfo, Type)

Načte vlastní atribut použitý na člena typu. Parametry určují člena a typ vlastního atributu, který chcete vyhledat.

GetCustomAttribute(MemberInfo, Type, Boolean)

Načte vlastní atribut použitý na člena typu. Parametry určují člena, typ vlastního atributu, který chcete vyhledat, a zda se mají vyhledávat nadřazené položky členu.

GetCustomAttribute(Module, Type)

Načte vlastní atribut použitý na modul. Parametry určují modul a typ vlastního atributu, který chcete vyhledat.

GetCustomAttribute(Module, Type, Boolean)

Načte vlastní atribut použitý na modul. Parametry určují modul, typ vlastního atributu, který chcete vyhledat, a ignorovanou možnost hledání.

GetCustomAttribute(ParameterInfo, Type)

Načte vlastní atribut použitý na parametr metody. Parametry určují parametr metody a typ vlastního atributu, který chcete vyhledat.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Načte vlastní atribut použitý na parametr metody. Parametry určují parametr metody, typ vlastního atributu, který se má vyhledat, a zda se mají hledat předky parametru metody.

GetCustomAttributes(Assembly)

Načte pole vlastních atributů použitých na sestavení. Parametr určuje sestavení.

GetCustomAttributes(Assembly, Boolean)

Načte pole vlastních atributů použitých na sestavení. Parametry určují sestavení a ignorovanou možnost hledání.

GetCustomAttributes(Assembly, Type)

Načte pole vlastních atributů použitých na sestavení. Parametry určují sestavení a typ vlastního atributu, který chcete vyhledat.

GetCustomAttributes(Assembly, Type, Boolean)

Načte pole vlastních atributů použitých na sestavení. Parametry určují sestavení, typ vlastního atributu, který chcete vyhledat, a ignorovanou možnost hledání.

GetCustomAttributes(MemberInfo)

Načte pole vlastních atributů použitých na člena typu. Parametr určuje člena.

GetCustomAttributes(MemberInfo, Boolean)

Načte pole vlastních atributů použitých na člena typu. Parametry určují člena, typ vlastního atributu, který chcete vyhledat, a zda se mají vyhledávat nadřazené položky členu.

GetCustomAttributes(MemberInfo, Type)

Načte pole vlastních atributů použitých na člena typu. Parametry určují člena a typ vlastního atributu, který chcete vyhledat.

GetCustomAttributes(MemberInfo, Type, Boolean)

Načte pole vlastních atributů použitých na člena typu. Parametry určují člena, typ vlastního atributu, který chcete vyhledat, a zda se mají vyhledávat nadřazené položky členu.

GetCustomAttributes(Module)

Načte pole vlastních atributů použitých na modul. Parametr určuje modul.

GetCustomAttributes(Module, Boolean)

Načte pole vlastních atributů použitých na modul. Parametry určují modul a ignorovanou možnost hledání.

GetCustomAttributes(Module, Type)

Načte pole vlastních atributů použitých na modul. Parametry určují modul a typ vlastního atributu, který chcete vyhledat.

GetCustomAttributes(Module, Type, Boolean)

Načte pole vlastních atributů použitých na modul. Parametry určují modul, typ vlastního atributu, který chcete vyhledat, a ignorovanou možnost hledání.

GetCustomAttributes(ParameterInfo)

Načte pole vlastních atributů použitých na parametr metody. Parametr určuje parametr metody.

GetCustomAttributes(ParameterInfo, Boolean)

Načte pole vlastních atributů použitých na parametr metody. Parametry určují parametr metody a to, jestli se mají hledat nadřazené vlastnosti parametru metody.

GetCustomAttributes(ParameterInfo, Type)

Načte pole vlastních atributů použitých na parametr metody. Parametry určují parametr metody a typ vlastního atributu, který chcete vyhledat.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Načte pole vlastních atributů použitých na parametr metody. Parametry určují parametr metody, typ vlastního atributu, který se má vyhledat, a zda se mají hledat předky parametru metody.

GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

GetType()

Získá aktuální Type instanci.

(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.

IsDefined(Assembly, Type)

Určuje, zda jsou na sestavení použity jakékoli vlastní atributy. Parametry určují sestavení a typ vlastního atributu, který chcete vyhledat.

IsDefined(Assembly, Type, Boolean)

Určuje, zda jsou na sestavení použity jakékoli vlastní atributy. Parametry určují sestavení, typ vlastního atributu, který chcete vyhledat, a ignorovanou možnost hledání.

IsDefined(MemberInfo, Type)

Určuje, zda jsou na člena typu použity nějaké vlastní atributy. Parametry určují člena a typ vlastního atributu, který chcete vyhledat.

IsDefined(MemberInfo, Type, Boolean)

Určuje, zda jsou na člena typu použity nějaké vlastní atributy. Parametry určují člena, typ vlastního atributu, který chcete vyhledat, a zda se mají vyhledávat nadřazené položky členu.

IsDefined(Module, Type)

Určuje, zda jsou na modul použity jakékoli vlastní atributy zadaného typu. Parametry určují modul a typ vlastního atributu, který chcete vyhledat.

IsDefined(Module, Type, Boolean)

Určuje, zda jsou na modul použity nějaké vlastní atributy. Parametry určují modul, typ vlastního atributu, který chcete vyhledat, a ignorovanou možnost hledání.

IsDefined(ParameterInfo, Type)

Určuje, zda jsou na parametr metody použity nějaké vlastní atributy. Parametry určují parametr metody a typ vlastního atributu, který chcete vyhledat.

IsDefined(ParameterInfo, Type, Boolean)

Určuje, zda jsou na parametr metody použity nějaké vlastní atributy. Parametry určují parametr metody, typ vlastního atributu, který se má vyhledat, a zda se mají hledat předky parametru metody.

Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

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

Vrátí řetězec, který představuje aktuální objekt.

(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í.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

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

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

Platí pro

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

Tento typ je bezpečný pro přístup z více vláken.

Viz také