Attribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 disediakan oleh atribut juga dikenal sebagai metadata. Metadata dapat diperiksa pada waktu proses oleh aplikasi Anda untuk mengontrol bagaimana program Anda memproses data, atau sebelum menjalankan waktu oleh alat eksternal untuk mengontrol bagaimana aplikasi Anda itu 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 kelas Attribute. Atribut dapat diterapkan ke elemen target apa pun; beberapa atribut dapat diterapkan ke elemen target yang sama; atribut dan dapat diwariskan oleh elemen yang berasal dari elemen target. Gunakan kelas AttributeTargets untuk menentukan elemen target tempat atribut diterapkan.
Kelas 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 dalam kelas turunan, mendapatkan pengidentifikasi unik untuk Attributeini. |
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 rakitan. Parameter menentukan rakitan, jenis atribut kustom yang akan 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 yang akan dicari. |
GetCustomAttribute(Module, Type, Boolean) |
Mengambil atribut kustom yang diterapkan ke modul. Parameter menentukan modul, jenis atribut kustom yang akan 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 yang akan dicari, dan apakah akan mencari leluhur parameter metode. |
GetCustomAttributes(Assembly) |
Mengambil array atribut kustom yang diterapkan ke rakitan. Parameter menentukan assembly. |
GetCustomAttributes(Assembly, Boolean) |
Mengambil array atribut kustom yang diterapkan ke rakitan. Parameter menentukan rakitan, dan opsi pencarian yang diabaikan. |
GetCustomAttributes(Assembly, Type) |
Mengambil array atribut kustom yang diterapkan ke rakitan. Parameter menentukan assembly, dan jenis atribut kustom yang akan dicari. |
GetCustomAttributes(Assembly, Type, Boolean) |
Mengambil array atribut kustom yang diterapkan ke rakitan. Parameter menentukan rakitan, jenis atribut kustom yang akan 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 untuk 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 nenek moyang 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 yang akan dicari, dan apakah akan mencari leluhur parameter metode. |
GetHashCode() |
Mengembalikan kode hash untuk instans ini. |
GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
IsDefaultAttribute() |
Ketika ditimpa dalam kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. |
IsDefined(Assembly, Type) |
Menentukan apakah ada atribut kustom yang diterapkan ke rakitan. Parameter menentukan assembly, dan jenis atribut kustom yang akan dicari. |
IsDefined(Assembly, Type, Boolean) |
Menentukan apakah ada atribut kustom yang diterapkan ke rakitan. 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 untuk 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 yang akan dicari, dan apakah akan mencari leluhur parameter metode. |
Match(Object) |
Saat ditimpa dalam kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. |
MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (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.