Attribute Kelas

Definisi

Mewakili kelas dasar untuk atribut kustom.

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
Warisan
Attribute
Turunan
Atribut
Penerapan

Contoh

Contoh kode berikut menunjukkan penggunaan 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.

Keterangan

Kelas Attribute mengaitkan informasi sistem yang telah ditentukan sebelumnya atau informasi kustom yang ditentukan pengguna dengan elemen target. Elemen target dapat menjadi rakitan, kelas, konstruktor, mendelegasikan, enum, peristiwa, bidang, antarmuka, metode, modul file portabel yang dapat dieksekusi, parameter, properti, nilai pengembalian, struct, atau atribut lain.

Informasi yang diberikan oleh atribut juga dikenal sebagai metadata. Metadata dapat diperiksa pada waktu proses oleh aplikasi Anda untuk mengontrol bagaimana program Anda memproses data, atau sebelum run time oleh alat eksternal untuk mengontrol bagaimana aplikasi Anda sendiri diproses atau dipertahankan. Misalnya, .NET telah menentukan dan menggunakan jenis atribut untuk mengontrol perilaku run-time, dan beberapa bahasa pemrograman menggunakan jenis atribut untuk mewakili fitur bahasa yang tidak didukung langsung oleh sistem jenis umum .NET.

Semua jenis atribut berasal secara langsung atau tidak langsung dari Attribute kelas . Atribut dapat diterapkan ke elemen target apa pun; beberapa atribut dapat diterapkan ke elemen target yang sama; atribut dan dapat diwarisi oleh elemen yang berasal dari elemen target. AttributeTargets Gunakan kelas untuk menentukan elemen target tempat atribut diterapkan.

Kelas ini Attribute menyediakan metode yang nyaman untuk mengambil dan menguji atribut kustom. Untuk informasi selengkapnya tentang menggunakan atribut, lihat Menerapkan Atribut dan Atribut.

Konstruktor

Attribute()

Menginisialisasi instans baru kelas Attribute.

Properti

TypeId

Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute.

Metode

Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

GetCustomAttribute(Assembly, Type)

Mengambil atribut kustom yang diterapkan ke rakitan tertentu. Parameter menentukan rakitan dan jenis atribut kustom yang akan dicari.

GetCustomAttribute(Assembly, Type, Boolean)

Mengambil atribut kustom yang diterapkan ke assembly. Parameter menentukan rakitan, jenis atribut kustom untuk dicari, dan opsi pencarian yang diabaikan.

GetCustomAttribute(MemberInfo, Type)

Mengambil atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota, dan jenis atribut kustom yang akan dicari.

GetCustomAttribute(MemberInfo, Type, Boolean)

Mengambil atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota, jenis atribut kustom untuk dicari, dan apakah akan mencari leluhur anggota.

GetCustomAttribute(Module, Type)

Mengambil atribut kustom yang diterapkan ke modul. Parameter menentukan modul, dan jenis atribut kustom untuk dicari.

GetCustomAttribute(Module, Type, Boolean)

Mengambil atribut kustom yang diterapkan ke modul. Parameter menentukan modul, jenis atribut kustom untuk dicari, dan opsi pencarian yang diabaikan.

GetCustomAttribute(ParameterInfo, Type)

Mengambil atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode, dan jenis atribut kustom yang akan dicari.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Mengambil atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode, jenis atribut kustom untuk dicari, dan apakah akan mencari leluhur parameter metode.

GetCustomAttributes(Assembly)

Mengambil array atribut kustom yang diterapkan ke assembly. Parameter menentukan assembly.

GetCustomAttributes(Assembly, Boolean)

Mengambil array atribut kustom yang diterapkan ke assembly. Parameter menentukan rakitan, dan opsi pencarian yang diabaikan.

GetCustomAttributes(Assembly, Type)

Mengambil array atribut kustom yang diterapkan ke assembly. Parameter menentukan assembly, dan jenis atribut kustom yang akan dicari.

GetCustomAttributes(Assembly, Type, Boolean)

Mengambil array atribut kustom yang diterapkan ke assembly. Parameter menentukan rakitan, jenis atribut kustom untuk dicari, dan opsi pencarian yang diabaikan.

GetCustomAttributes(MemberInfo)

Mengambil array atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota.

GetCustomAttributes(MemberInfo, Boolean)

Mengambil array atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota, jenis atribut kustom untuk dicari, dan apakah akan mencari leluhur anggota.

GetCustomAttributes(MemberInfo, Type)

Mengambil array atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota, dan jenis atribut kustom yang akan dicari.

GetCustomAttributes(MemberInfo, Type, Boolean)

Mengambil array atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota, jenis atribut kustom yang akan dicari, dan apakah akan mencari leluhur anggota.

GetCustomAttributes(Module)

Mengambil array atribut kustom yang diterapkan ke modul. Parameter menentukan modul.

GetCustomAttributes(Module, Boolean)

Mengambil array atribut kustom yang diterapkan ke modul. Parameter menentukan modul, dan opsi pencarian yang diabaikan.

GetCustomAttributes(Module, Type)

Mengambil array atribut kustom yang diterapkan ke modul. Parameter menentukan modul, dan jenis atribut kustom yang akan dicari.

GetCustomAttributes(Module, Type, Boolean)

Mengambil array atribut kustom yang diterapkan ke modul. Parameter menentukan modul, jenis atribut kustom yang akan dicari, dan opsi pencarian yang diabaikan.

GetCustomAttributes(ParameterInfo)

Mengambil array atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode.

GetCustomAttributes(ParameterInfo, Boolean)

Mengambil array atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode, dan apakah akan mencari leluhur parameter metode.

GetCustomAttributes(ParameterInfo, Type)

Mengambil array atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode, dan jenis atribut kustom yang akan dicari.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Mengambil array atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode, jenis atribut kustom untuk dicari, dan apakah akan mencari leluhur parameter metode.

GetHashCode()

Mengembalikan kode hash untuk instans ini.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
IsDefaultAttribute()

Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan.

IsDefined(Assembly, Type)

Menentukan apakah ada atribut kustom yang diterapkan ke assembly. Parameter menentukan rakitan, dan jenis atribut kustom yang akan dicari.

IsDefined(Assembly, Type, Boolean)

Menentukan apakah ada atribut kustom yang diterapkan ke assembly. Parameter menentukan rakitan, jenis atribut kustom yang akan dicari, dan opsi pencarian yang diabaikan.

IsDefined(MemberInfo, Type)

Menentukan apakah ada atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota, dan jenis atribut kustom yang akan dicari.

IsDefined(MemberInfo, Type, Boolean)

Menentukan apakah ada atribut kustom yang diterapkan ke anggota jenis. Parameter menentukan anggota, jenis atribut kustom yang akan dicari, dan apakah akan mencari leluhur anggota.

IsDefined(Module, Type)

Menentukan apakah ada atribut kustom dari jenis tertentu yang diterapkan ke modul. Parameter menentukan modul, dan jenis atribut kustom yang akan dicari.

IsDefined(Module, Type, Boolean)

Menentukan apakah ada atribut kustom yang diterapkan ke modul. Parameter menentukan modul, jenis atribut kustom yang akan dicari, dan opsi pencarian yang diabaikan.

IsDefined(ParameterInfo, Type)

Menentukan apakah ada atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode, dan jenis atribut kustom yang akan dicari.

IsDefined(ParameterInfo, Type, Boolean)

Menentukan apakah ada atribut kustom yang diterapkan ke parameter metode. Parameter menentukan parameter metode, jenis atribut kustom untuk dicari, dan apakah akan mencari leluhur parameter metode.

Match(Object)

Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

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

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

_Attribute.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

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

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

Berlaku untuk

Keamanan Thread

Jenis ini aman untuk utas.

Lihat juga