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)]
[System.Serializable]
public abstract class 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
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
[<System.Serializable>]
type Attribute = class
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ží 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, přenosný spustitelný soubor modul, parametr, vlastnost, návratová hodnota, struktura nebo jiný atribut.

Informace poskytované atributem se také označují jako metadata. Metadata je možné prozkoumat v době běhu vaší aplikace, abyste mohli řídit, jak program zpracovává data, nebo před spuštěním externími nástroji, které určují, jak se vaše aplikace zpracovává nebo udržuje. Například předdefinované rozhraní .NET 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 běžným systémem typů .NET.

Všechny typy atributů jsou odvozeny přímo nebo nepřímo z Attribute třídy. Atributy lze použít u libovolného cílového elementu; u stejného cílového elementu lze použít více atributů; a atributy lze dědit elementem odvozeným z cílového prvku. Třída slouží k určení cílového AttributeTargets elementu, na který je atribut použit.

Třída Attribute poskytuje pohodlné metody pro načtení a testování vlastních atributů. Další informace o používání atributů naleznete 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 tento Attribute.

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ý se má vyhledat.

GetCustomAttribute(Assembly, Type, Boolean)

Načte vlastní atribut použitý na sestavení. Parametry určují sestavení, typ vlastního atributu, který se má vyhledat, a ignorovanou vyhledávací možnost.

GetCustomAttribute(MemberInfo, Type)

Načte vlastní atribut použitý pro člena typu. Parametry určují člena a typ vlastního atributu, který se má vyhledat.

GetCustomAttribute(MemberInfo, Type, Boolean)

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

GetCustomAttribute(Module, Type)

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

GetCustomAttribute(Module, Type, Boolean)

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

GetCustomAttribute(ParameterInfo, Type)

Načte vlastní atribut použitý u parametru metody. Parametry určují parametr metody a typ vlastního atributu, který se má vyhledat.

GetCustomAttribute(ParameterInfo, Type, Boolean)

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

GetCustomAttributes(Assembly)

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

GetCustomAttributes(Assembly, Boolean)

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

GetCustomAttributes(Assembly, Type)

Načte pole vlastních atributů použitých pro sestavení. Parametry určují sestavení a typ vlastního atributu, který se má 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ý se má vyhledat, a ignorovanou možnost hledání.

GetCustomAttributes(MemberInfo)

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

GetCustomAttributes(MemberInfo, Boolean)

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

GetCustomAttributes(MemberInfo, Type)

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

GetCustomAttributes(MemberInfo, Type, Boolean)

Načte pole vlastních atributů použitých u člena typu. Parametry určují člena, typ vlastního atributu, který se má vyhledat, a zda se mají hledat nadřazené členy.

GetCustomAttributes(Module)

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

GetCustomAttributes(Module, Boolean)

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

GetCustomAttributes(Module, Type)

Načte pole vlastních atributů použitých v modulu. Parametry určují modul a typ vlastního atributu, který se má vyhledat.

GetCustomAttributes(Module, Type, Boolean)

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

GetCustomAttributes(ParameterInfo)

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

GetCustomAttributes(ParameterInfo, Boolean)

Načte pole vlastních atributů použitých u parametru metody. Parametry určují parametr metody a zda se mají hledat předky parametru metody.

GetCustomAttributes(ParameterInfo, Type)

Načte pole vlastních atributů použitých u parametru metody. Parametry určují parametr metody a typ vlastního atributu, který se má vyhledat.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Načte pole vlastních atributů použitých u parametru 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()

Type Získá aktuální instanci.

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

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou odvozené třídy.

IsDefined(Assembly, Type)

Určuje, jestli se na sestavení použijí nějaké vlastní atributy. Parametry určují sestavení a typ vlastního atributu, který se má vyhledat.

IsDefined(Assembly, Type, Boolean)

Určuje, jestli se na sestavení použijí nějaké vlastní atributy. Parametry určují sestavení, typ vlastního atributu, který se má vyhledat, a ignorovanou vyhledávací možnost.

IsDefined(MemberInfo, Type)

Určuje, zda se u člena typu použijí nějaké vlastní atributy. Parametry určují člena a typ vlastního atributu, který se má vyhledat.

IsDefined(MemberInfo, Type, Boolean)

Určuje, zda se u člena typu použijí nějaké vlastní atributy. Parametry určují člena, typ vlastního atributu, který se má vyhledat, a zda se mají hledat předky člena.

IsDefined(Module, Type)

Určuje, zda se u modulu použijí nějaké vlastní atributy zadaného typu. Parametry určují modul a typ vlastního atributu, který se má vyhledat.

IsDefined(Module, Type, Boolean)

Určuje, jestli se u modulu použijí nějaké vlastní atributy. Parametry určují modul, typ vlastního atributu, který se má vyhledat, a ignorovanou možnost hledání.

IsDefined(ParameterInfo, Type)

Určuje, zda se u parametru metody použijí nějaké vlastní atributy. Parametry určují parametr metody a typ vlastního atributu, který se má vyhledat.

IsDefined(ParameterInfo, Type, Boolean)

Určuje, zda se u parametru metody použijí 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ří použádnou kopii aktuálního souboru Object.

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