Attribute Klas

Definitie

Vertegenwoordigt de basisklasse voor aangepaste kenmerken.

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
Overname
Attribute
Afgeleid
Kenmerken
Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u het gebruik van 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.

Opmerkingen

De Attribute klasse koppelt vooraf gedefinieerde systeemgegevens of door de gebruiker gedefinieerde aangepaste gegevens aan een doelelement. Een doelelement kan een assembly, klasse, constructor, delegate, enum, event, field, interface, method, portable executable file module, parameter, eigenschap, return value, struct of een ander kenmerk zijn.

Informatie van een kenmerk wordt ook wel metagegevens genoemd. Metagegevens kunnen tijdens runtime door uw toepassing worden onderzocht om te bepalen hoe uw programma gegevens verwerkt of voordat de runtime wordt uitgevoerd door externe hulpprogramma's om te bepalen hoe uw toepassing zelf wordt verwerkt of onderhouden. .NET bijvoorbeeld vooraf gedefinieerde kenmerken en maakt gebruik van kenmerktypen om runtimegedrag te beheren en sommige programmeertalen gebruiken kenmerktypen om taalfuncties weer te geven die niet rechtstreeks worden ondersteund door het .NET algemene typesysteem.

Alle kenmerktypen zijn rechtstreeks of indirect afgeleid van de Attribute klasse. Kenmerken kunnen worden toegepast op elk doelelement; meerdere kenmerken kunnen worden toegepast op hetzelfde doelelement; en kenmerken kunnen worden overgenomen door een element dat is afgeleid van een doelelement. Gebruik de AttributeTargets klasse om het doelelement op te geven waarop het kenmerk wordt toegepast.

De Attribute klasse biedt handige methoden om aangepaste kenmerken op te halen en te testen. Zie Kenmerken en kenmerken toepassen voor meer informatie over het gebruik van kenmerken.

Constructors

Name Description
Attribute()

Initialiseert een nieuw exemplaar van de Attribute klasse.

Eigenschappen

Name Description
TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

GetCustomAttribute(Assembly, Type, Boolean)

Hiermee wordt een aangepast kenmerk opgehaald dat is toegepast op een assembly. Parameters geven de assembly, het type aangepast kenmerk op dat moet worden gezocht en een genegeerde zoekoptie.

GetCustomAttribute(Assembly, Type)

Hiermee haalt u een aangepast kenmerk op dat is toegepast op een opgegeven assembly. Parameters geven de assembly en het type van het aangepaste kenmerk op dat moet worden gezocht.

GetCustomAttribute(MemberInfo, Type, Boolean)

Hiermee wordt een aangepast kenmerk opgehaald dat is toegepast op een lid van een type. Parameters geven het lid, het type aangepast kenmerk op dat moet worden gezocht en of er moet worden gezocht naar bovenliggende voorouders van het lid.

GetCustomAttribute(MemberInfo, Type)

Hiermee wordt een aangepast kenmerk opgehaald dat is toegepast op een lid van een type. Parameters geven het lid op en het type van het aangepaste kenmerk dat moet worden gezocht.

GetCustomAttribute(Module, Type, Boolean)

Hiermee wordt een aangepast kenmerk opgehaald dat is toegepast op een module. Parameters geven de module, het type aangepast kenmerk op dat moet worden gezocht en een genegeerde zoekoptie.

GetCustomAttribute(Module, Type)

Hiermee wordt een aangepast kenmerk opgehaald dat is toegepast op een module. Parameters geven de module en het type van het aangepaste kenmerk op dat moet worden gezocht.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Hiermee wordt een aangepast kenmerk opgehaald dat is toegepast op een methodeparameter. Parameters specificeren de methodeparameter, het type aangepast kenmerk dat moet worden gezocht en of er moet worden gezocht naar bovenliggende elementen van de methodeparameter.

GetCustomAttribute(ParameterInfo, Type)

Hiermee wordt een aangepast kenmerk opgehaald dat is toegepast op een methodeparameter. Parameters geven de methodeparameter en het type van het aangepaste kenmerk op dat moet worden gezocht.

GetCustomAttributes(Assembly, Boolean)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een assembly. Parameters geven de assembly en een genegeerde zoekoptie op.

GetCustomAttributes(Assembly, Type, Boolean)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een assembly. Parameters geven de assembly, het type aangepast kenmerk op dat moet worden gezocht en een genegeerde zoekoptie.

GetCustomAttributes(Assembly, Type)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een assembly. Parameters geven de assembly op en het type van het aangepaste kenmerk dat moet worden gezocht.

GetCustomAttributes(Assembly)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een assembly. Met een parameter wordt de assembly opgegeven.

GetCustomAttributes(MemberInfo, Boolean)

Hiermee wordt een matrix opgehaald van de aangepaste kenmerken die zijn toegepast op een lid van een type. Parameters geven het lid, het type aangepast kenmerk op dat moet worden gezocht en of er moet worden gezocht naar bovenliggende voorouders van het lid.

GetCustomAttributes(MemberInfo, Type, Boolean)

Hiermee wordt een matrix opgehaald van de aangepaste kenmerken die zijn toegepast op een lid van een type. Parameters geven het lid, het type aangepast kenmerk op dat moet worden gezocht en of er moet worden gezocht naar bovenliggende voorouders van het lid.

GetCustomAttributes(MemberInfo, Type)

Hiermee wordt een matrix opgehaald van de aangepaste kenmerken die zijn toegepast op een lid van een type. Parameters geven het lid op en het type van het aangepaste kenmerk dat moet worden gezocht.

GetCustomAttributes(MemberInfo)

Hiermee wordt een matrix opgehaald van de aangepaste kenmerken die zijn toegepast op een lid van een type. Met een parameter wordt het lid opgegeven.

GetCustomAttributes(Module, Boolean)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een module. Parameters geven de module en een genegeerde zoekoptie op.

GetCustomAttributes(Module, Type, Boolean)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een module. Parameters geven de module, het type aangepast kenmerk op dat moet worden gezocht en een genegeerde zoekoptie.

GetCustomAttributes(Module, Type)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een module. Parameters geven de module en het type van het aangepaste kenmerk op dat moet worden gezocht.

GetCustomAttributes(Module)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een module. Met een parameter wordt de module opgegeven.

GetCustomAttributes(ParameterInfo, Boolean)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een methodeparameter. Parameters geven de methodeparameter op en of u bovenliggende kenmerken van de methodeparameter wilt doorzoeken.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een methodeparameter. Parameters specificeren de methodeparameter, het type aangepast kenmerk dat moet worden gezocht en of er moet worden gezocht naar bovenliggende elementen van de methodeparameter.

GetCustomAttributes(ParameterInfo, Type)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een methodeparameter. Parameters geven de methodeparameter en het type van het aangepaste kenmerk op dat moet worden gezocht.

GetCustomAttributes(ParameterInfo)

Hiermee haalt u een matrix op van de aangepaste kenmerken die zijn toegepast op een methodeparameter. Een parameter geeft de methodeparameter op.

GetHashCode()

Retourneert de hash-code voor dit exemplaar.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

IsDefined(Assembly, Type, Boolean)

Bepaalt of aangepaste kenmerken worden toegepast op een assembly. Parameters geven de assembly, het type aangepast kenmerk op dat moet worden gezocht en een genegeerde zoekoptie.

IsDefined(Assembly, Type)

Bepaalt of aangepaste kenmerken worden toegepast op een assembly. Parameters geven de assembly op en het type van het aangepaste kenmerk dat moet worden gezocht.

IsDefined(MemberInfo, Type, Boolean)

Bepaalt of aangepaste kenmerken worden toegepast op een lid van een type. Parameters geven het lid, het type aangepast kenmerk op dat moet worden gezocht en of er moet worden gezocht naar bovenliggende voorouders van het lid.

IsDefined(MemberInfo, Type)

Bepaalt of aangepaste kenmerken worden toegepast op een lid van een type. Parameters geven het lid op en het type van het aangepaste kenmerk dat moet worden gezocht.

IsDefined(Module, Type, Boolean)

Bepaalt of aangepaste kenmerken worden toegepast op een module. Parameters geven de module, het type aangepast kenmerk op dat moet worden gezocht en een genegeerde zoekoptie.

IsDefined(Module, Type)

Bepaalt of aangepaste kenmerken van een opgegeven type worden toegepast op een module. Parameters geven de module en het type van het aangepaste kenmerk op dat moet worden gezocht.

IsDefined(ParameterInfo, Type, Boolean)

Bepaalt of aangepaste kenmerken worden toegepast op een methodeparameter. Parameters specificeren de methodeparameter, het type aangepast kenmerk dat moet worden gezocht en of er moet worden gezocht naar bovenliggende elementen van de methodeparameter.

IsDefined(ParameterInfo, Type)

Bepaalt of aangepaste kenmerken worden toegepast op een methodeparameter. Parameters geven de methodeparameter en het type van het aangepaste kenmerk op dat moet worden gezocht.

Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

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

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

Van toepassing op

Veiligheid thread

Dit type is thread veilig.

Zie ook