Attribute Osztály

Definíció

Az egyéni attribútumok alaposztályát jelöli.

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
Öröklődés
Attribute
Származtatott
Attribútumok
Megvalósítás

Példák

Az alábbi példakód bemutatja a használatot 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.

Megjegyzések

Az Attribute osztály előre definiált rendszerinformációkat vagy felhasználó által definiált egyéni adatokat társít egy célelemhez. A célelem lehet szerelvény, osztály, konstruktor, delegált, szám, esemény, mező, interfész, metódus, hordozható végrehajtható fájlmodul, paraméter, tulajdonság, visszatérési érték, struct vagy más attribútum.

Az attribútum által biztosított információk metaadatoknak is nevezik. A metaadatokat az alkalmazás futtatáskor is megvizsgálhatja, így szabályozhatja, hogy a program hogyan dolgozza fel az adatokat, vagy mielőtt külső eszközök irányítanák az alkalmazás feldolgozását vagy karbantartását. Például .NET előredefiniált, és attribútumtípusokkal szabályozza a futásidejű működést, egyes programozási nyelvek pedig attribútumtípusokkal jelölik a .NET gyakori típusrendszer által közvetlenül nem támogatott nyelvi funkciókat.

Minden attribútumtípus közvetlenül vagy közvetve származik az Attribute osztályból. Az attribútumok bármely célelemre alkalmazhatók; több attribútum is alkalmazható ugyanarra a célelemre; és az attribútumokat egy célelemből származtatott elem örökölheti. AttributeTargets Az osztály használatával adja meg azt a célelemet, amelyre az attribútumot alkalmazza.

Az Attribute osztály kényelmes módszereket biztosít az egyéni attribútumok lekéréséhez és teszteléséhez. További információ az attribútumok használatáról: Attribútumok és attribútumok alkalmazása.

Konstruktorok

Name Description
Attribute()

Inicializálja a Attribute osztály új példányát.

Tulajdonságok

Name Description
TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

GetCustomAttribute(Assembly, Type, Boolean)

Beolvas egy szerelvényre alkalmazott egyéni attribútumot. A paraméterek megadják a szerelvényt, a keresendő egyéni attribútum típusát és egy figyelmen kívül hagyott keresési lehetőséget.

GetCustomAttribute(Assembly, Type)

Lekéri a megadott szerelvényre alkalmazott egyéni attribútumot. A paraméterek határozzák meg a szerelvényt és a keresendő egyéni attribútum típusát.

GetCustomAttribute(MemberInfo, Type, Boolean)

Lekéri a típus egy tagjára alkalmazott egyéni attribútumot. A paraméterek meghatározzák a tagot, a keresendő egyéni attribútum típusát, valamint azt, hogy a tag elődei között szeretne-e keresni.

GetCustomAttribute(MemberInfo, Type)

Lekéri a típus egy tagjára alkalmazott egyéni attribútumot. A paraméterek határozzák meg a tagot és a keresendő egyéni attribútum típusát.

GetCustomAttribute(Module, Type, Boolean)

Egy modulra alkalmazott egyéni attribútumot kér le. A paraméterek megadják a modult, a keresendő egyéni attribútum típusát és egy figyelmen kívül hagyott keresési lehetőséget.

GetCustomAttribute(Module, Type)

Egy modulra alkalmazott egyéni attribútumot kér le. A paraméterek határozzák meg a modult és a keresendő egyéni attribútum típusát.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Egy metódusparaméterre alkalmazott egyéni attribútumot kér le. A paraméterek megadják a metódusparamétert, a keresendő egyéni attribútum típusát, valamint azt, hogy a metódusparaméter elődjeiben kell-e keresni.

GetCustomAttribute(ParameterInfo, Type)

Egy metódusparaméterre alkalmazott egyéni attribútumot kér le. A paraméterek határozzák meg a metódusparamétert és a keresendő egyéni attribútum típusát.

GetCustomAttributes(Assembly, Boolean)

Egy szerelvényre alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek határozzák meg a szerelvényt, és egy figyelmen kívül hagyott keresési lehetőséget.

GetCustomAttributes(Assembly, Type, Boolean)

Egy szerelvényre alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek megadják a szerelvényt, a keresendő egyéni attribútum típusát és egy figyelmen kívül hagyott keresési lehetőséget.

GetCustomAttributes(Assembly, Type)

Egy szerelvényre alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek határozzák meg a szerelvényt és a keresendő egyéni attribútum típusát.

GetCustomAttributes(Assembly)

Egy szerelvényre alkalmazott egyéni attribútumok tömbjének lekérése. Egy paraméter adja meg a szerelvényt.

GetCustomAttributes(MemberInfo, Boolean)

Lekéri a típus egy tagjára alkalmazott egyéni attribútumok tömbét. A paraméterek meghatározzák a tagot, a keresendő egyéni attribútum típusát, valamint azt, hogy a tag elődei között szeretne-e keresni.

GetCustomAttributes(MemberInfo, Type, Boolean)

Lekéri a típus egy tagjára alkalmazott egyéni attribútumok tömbét. A paraméterek meghatározzák a tagot, a keresendő egyéni attribútum típusát, valamint azt, hogy a tag elődei között szeretne-e keresni.

GetCustomAttributes(MemberInfo, Type)

Lekéri a típus egy tagjára alkalmazott egyéni attribútumok tömbét. A paraméterek határozzák meg a tagot és a keresendő egyéni attribútum típusát.

GetCustomAttributes(MemberInfo)

Lekéri a típus egy tagjára alkalmazott egyéni attribútumok tömbét. Egy paraméter adja meg a tagot.

GetCustomAttributes(Module, Boolean)

A modulra alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek határozzák meg a modult, és egy figyelmen kívül hagyott keresési lehetőséget.

GetCustomAttributes(Module, Type, Boolean)

A modulra alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek megadják a modult, a keresendő egyéni attribútum típusát és egy figyelmen kívül hagyott keresési lehetőséget.

GetCustomAttributes(Module, Type)

A modulra alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek határozzák meg a modult és a keresendő egyéni attribútum típusát.

GetCustomAttributes(Module)

A modulra alkalmazott egyéni attribútumok tömbjének lekérése. Egy paraméter adja meg a modult.

GetCustomAttributes(ParameterInfo, Boolean)

A metódusparaméterre alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek határozzák meg a metódusparamétert, és azt, hogy a metódusparaméter elődei között kell-e keresni.

GetCustomAttributes(ParameterInfo, Type, Boolean)

A metódusparaméterre alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek megadják a metódusparamétert, a keresendő egyéni attribútum típusát, valamint azt, hogy a metódusparaméter elődjeiben kell-e keresni.

GetCustomAttributes(ParameterInfo, Type)

A metódusparaméterre alkalmazott egyéni attribútumok tömbjének lekérése. A paraméterek határozzák meg a metódusparamétert és a keresendő egyéni attribútum típusát.

GetCustomAttributes(ParameterInfo)

A metódusparaméterre alkalmazott egyéni attribútumok tömbjének lekérése. A paraméter a metódusparamétert adja meg.

GetHashCode()

A példány kivonatkódját adja vissza.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

IsDefined(Assembly, Type, Boolean)

Meghatározza, hogy a rendszer alkalmaz-e egyéni attribútumokat egy szerelvényre. A paraméterek megadják a szerelvényt, a keresendő egyéni attribútum típusát és egy figyelmen kívül hagyott keresési lehetőséget.

IsDefined(Assembly, Type)

Meghatározza, hogy a rendszer alkalmaz-e egyéni attribútumokat egy szerelvényre. A paraméterek határozzák meg a szerelvényt és a keresendő egyéni attribútum típusát.

IsDefined(MemberInfo, Type, Boolean)

Meghatározza, hogy a rendszer alkalmaz-e egyéni attribútumokat egy adott típusú tagra. A paraméterek meghatározzák a tagot, a keresendő egyéni attribútum típusát, valamint azt, hogy a tag elődei között szeretne-e keresni.

IsDefined(MemberInfo, Type)

Meghatározza, hogy a rendszer alkalmaz-e egyéni attribútumokat egy adott típusú tagra. A paraméterek határozzák meg a tagot és a keresendő egyéni attribútum típusát.

IsDefined(Module, Type, Boolean)

Meghatározza, hogy vannak-e egyéni attribútumok egy modulra alkalmazva. A paraméterek megadják a modult, a keresendő egyéni attribútum típusát és egy figyelmen kívül hagyott keresési lehetőséget.

IsDefined(Module, Type)

Meghatározza, hogy a megadott típusú egyéni attribútumok alkalmazhatók-e egy modulra. A paraméterek határozzák meg a modult és a keresendő egyéni attribútum típusát.

IsDefined(ParameterInfo, Type, Boolean)

Meghatározza, hogy a rendszer alkalmaz-e egyéni attribútumokat egy metódusparaméterre. A paraméterek megadják a metódusparamétert, a keresendő egyéni attribútum típusát, valamint azt, hogy a metódusparaméter elődjeiben kell-e keresni.

IsDefined(ParameterInfo, Type)

Meghatározza, hogy a rendszer alkalmaz-e egyéni attribútumokat egy metódusparaméterre. A paraméterek határozzák meg a metódusparamétert és a keresendő egyéni attribútum típusát.

Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

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

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

A következőre érvényes:

Szálbiztonság

Ez a típus szálbiztos.

Lásd még