Aracılığıyla paylaş


Attribute Sınıf

Tanım

Özel öznitelikler için temel sınıfı temsil eder.

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
Devralma
Attribute
Türetilmiş
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki kod örneğinde Attributekullanımı gösterilmektedir.

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.

Açıklamalar

Attribute sınıfı, önceden tanımlanmış sistem bilgilerini veya kullanıcı tanımlı özel bilgileri bir hedef öğeyle ilişkilendirir. Hedef öğe bir derleme, sınıf, oluşturucu, temsilci, numaralandırma, olay, alan, arabirim, yöntem, taşınabilir yürütülebilir dosya modülü, parametre, özellik, dönüş değeri, yapısı veya başka bir öznitelik olabilir.

Bir öznitelik tarafından sağlanan bilgiler meta veri olarak da bilinir. Meta veriler, uygulamanızın verileri nasıl işlediğini denetlemek için uygulamanız tarafından çalışma zamanında incelenebilir veya uygulamanızın nasıl işlendiğini veya bakımının nasıl yapıldığını denetlemek için dış araçlar tarafından çalışma zamanından önce incelenebilir. Örneğin, .NET çalışma zamanı davranışını denetlemek için öznitelik türlerini önceden tanımlanmış ve kullanır ve bazı programlama dilleri ise .NET ortak tür sistemi tarafından doğrudan desteklenmeyen dil özelliklerini temsil etmek için öznitelik türlerini kullanır.

Tüm öznitelik türleri doğrudan veya dolaylı olarak Attribute sınıfından türetilir. Öznitelikler herhangi bir hedef öğeye uygulanabilir; aynı hedef öğeye birden çok öznitelik uygulanabilir; ve öznitelikleri, hedef öğeden türetilen bir öğe tarafından devralınabilir. özniteliğinin uygulandığı hedef öğeyi belirtmek için AttributeTargets sınıfını kullanın.

Attribute sınıfı, özel öznitelikleri almak ve test etmek için kullanışlı yöntemler sağlar. Öznitelikleri kullanma hakkında daha fazla bilgi için bkz. Öznitelikleri Uygulama ve Öznitelikleri.

Oluşturucular

Attribute()

Attribute sınıfının yeni bir örneğini başlatır.

Özellikler

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

GetCustomAttribute(Assembly, Type, Boolean)

Bir derlemeye uygulanan özel özniteliği alır. Parametreler derlemeyi, aranacak özel özniteliğin türünü ve yoksayılan arama seçeneğini belirtir.

GetCustomAttribute(Assembly, Type)

Belirtilen derlemeye uygulanan özel bir özniteliği alır. Parametreler, aranacak özel özniteliğin derlemesini ve türünü belirtir.

GetCustomAttribute(MemberInfo, Type, Boolean)

Bir türün üyesine uygulanan özel özniteliği alır. Parametreler üyeyi, aranacak özel özniteliğin türünü ve üyenin atalarının aranıp aranmayacağını belirtir.

GetCustomAttribute(MemberInfo, Type)

Bir türün üyesine uygulanan özel özniteliği alır. Parametreler, üyeyi ve aranacak özel özniteliğin türünü belirtir.

GetCustomAttribute(Module, Type, Boolean)

Modüle uygulanan özel bir özniteliği alır. Parametreler modülü, aranacak özel özniteliğin türünü ve yoksayılan arama seçeneğini belirtir.

GetCustomAttribute(Module, Type)

Modüle uygulanan özel bir özniteliği alır. Parametreler modülü ve aranacak özel özniteliğin türünü belirtir.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Yöntem parametresine uygulanan özel bir özniteliği alır. Parametreler yöntem parametresini, aranacak özel özniteliğin türünü ve yöntem parametresinin alt öğesinin aranıp aranmayacağını belirtir.

GetCustomAttribute(ParameterInfo, Type)

Yöntem parametresine uygulanan özel bir özniteliği alır. Parametreler yöntem parametresini ve aranacak özel özniteliğin türünü belirtir.

GetCustomAttributes(Assembly, Boolean)

Bir derlemeye uygulanan özel özniteliklerin dizisini alır. Parametreler derlemeyi ve yoksayılan arama seçeneğini belirtir.

GetCustomAttributes(Assembly, Type, Boolean)

Bir derlemeye uygulanan özel özniteliklerin dizisini alır. Parametreler derlemeyi, aranacak özel özniteliğin türünü ve yoksayılan arama seçeneğini belirtir.

GetCustomAttributes(Assembly, Type)

Bir derlemeye uygulanan özel özniteliklerin dizisini alır. Parametreler derlemeyi ve aranacak özel özniteliğin türünü belirtir.

GetCustomAttributes(Assembly)

Bir derlemeye uygulanan özel özniteliklerin dizisini alır. Parametresi derlemeyi belirtir.

GetCustomAttributes(MemberInfo, Boolean)

Bir türün üyesine uygulanan özel özniteliklerin dizisini alır. Parametreler üyeyi, aranacak özel özniteliğin türünü ve üyenin atalarının aranıp aranmayacağını belirtir.

GetCustomAttributes(MemberInfo, Type, Boolean)

Bir türün üyesine uygulanan özel özniteliklerin dizisini alır. Parametreler üyeyi, aranacak özel özniteliğin türünü ve üyenin atalarının aranıp aranmayacağını belirtir.

GetCustomAttributes(MemberInfo, Type)

Bir türün üyesine uygulanan özel özniteliklerin dizisini alır. Parametreler, üyeyi ve aranacak özel özniteliğin türünü belirtir.

GetCustomAttributes(MemberInfo)

Bir türün üyesine uygulanan özel özniteliklerin dizisini alır. Bir parametre üyeyi belirtir.

GetCustomAttributes(Module, Boolean)

Modüle uygulanan özel özniteliklerin dizisini alır. Parametreler modülü ve yoksayılan arama seçeneğini belirtir.

GetCustomAttributes(Module, Type, Boolean)

Modüle uygulanan özel özniteliklerin dizisini alır. Parametreler modülü, aranacak özel özniteliğin türünü ve yoksayılan arama seçeneğini belirtir.

GetCustomAttributes(Module, Type)

Modüle uygulanan özel özniteliklerin dizisini alır. Parametreler modülü ve aranacak özel özniteliğin türünü belirtir.

GetCustomAttributes(Module)

Modüle uygulanan özel özniteliklerin dizisini alır. Parametresi modülü belirtir.

GetCustomAttributes(ParameterInfo, Boolean)

Bir yöntem parametresine uygulanan özel özniteliklerin dizisini alır. Parametreler yöntem parametresini ve yöntem parametresinin atalarının aranıp aranmayacağını belirtir.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Bir yöntem parametresine uygulanan özel özniteliklerin dizisini alır. Parametreler yöntem parametresini, aranacak özel özniteliğin türünü ve yöntem parametresinin alt öğesinin aranıp aranmayacağını belirtir.

GetCustomAttributes(ParameterInfo, Type)

Bir yöntem parametresine uygulanan özel özniteliklerin dizisini alır. Parametreler yöntem parametresini ve aranacak özel özniteliğin türünü belirtir.

GetCustomAttributes(ParameterInfo)

Bir yöntem parametresine uygulanan özel özniteliklerin dizisini alır. parametresi yöntem parametresini belirtir.

GetHashCode()

Bu örneğin karma kodunu döndürür.

GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

IsDefined(Assembly, Type, Boolean)

Herhangi bir özel özniteliğin bir derlemeye uygulanıp uygulanmadığını belirler. Parametreler derlemeyi, aranacak özel özniteliğin türünü ve yoksayılan arama seçeneğini belirtir.

IsDefined(Assembly, Type)

Herhangi bir özel özniteliğin bir derlemeye uygulanıp uygulanmadığını belirler. Parametreler derlemeyi ve aranacak özel özniteliğin türünü belirtir.

IsDefined(MemberInfo, Type, Boolean)

Herhangi bir özel özniteliğin bir türün üyesine uygulanıp uygulanmadığını belirler. Parametreler üyeyi, aranacak özel özniteliğin türünü ve üyenin atalarının aranıp aranmayacağını belirtir.

IsDefined(MemberInfo, Type)

Herhangi bir özel özniteliğin bir türün üyesine uygulanıp uygulanmadığını belirler. Parametreler, üyeyi ve aranacak özel özniteliğin türünü belirtir.

IsDefined(Module, Type, Boolean)

Herhangi bir özel özniteliğin bir modüle uygulanıp uygulanmadığını belirler. Parametreler modülü, aranacak özel özniteliğin türünü ve yoksayılan arama seçeneğini belirtir.

IsDefined(Module, Type)

Belirli bir türe ait özel özniteliklerin modüle uygulanıp uygulanmadığını belirler. Parametreler modülü ve aranacak özel özniteliğin türünü belirtir.

IsDefined(ParameterInfo, Type, Boolean)

Herhangi bir özel özniteliğin bir yöntem parametresine uygulanıp uygulanmadığını belirler. Parametreler yöntem parametresini, aranacak özel özniteliğin türünü ve yöntem parametresinin alt öğesinin aranıp aranmayacağını belirtir.

IsDefined(ParameterInfo, Type)

Herhangi bir özel özniteliğin bir yöntem parametresine uygulanıp uygulanmadığını belirler. Parametreler yöntem parametresini ve aranacak özel özniteliğin türünü belirtir.

Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

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

Bir ad kümesini ilgili dağıtım tanımlayıcıları kümesiyle eşler.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 veya 1).

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

Bir nesne tarafından kullanıma sunulan özelliklere ve yöntemlere erişim sağlar.

Şunlara uygulanır

İş Parçacığı Güvenliği

Bu tür iş parçacığı güvenlidir.

Ayrıca bkz.

  • öznitelikleri uygulama
  • Öznitelikler Kullanarak Meta Verileri Genişletmeyi