CustomAttribute Struktur
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.
Menyediakan informasi tentang atribut kustom.
public value class CustomAttribute
public struct CustomAttribute
public readonly struct CustomAttribute
type CustomAttribute = struct
Public Structure CustomAttribute
- Warisan
Contoh
Contoh ini menunjukkan cara mencetak semua atribut kustom yang diterapkan ke definisi jenis:
class MyAttribute : Attribute
{
public int X { get; set; }
}
[My(X = 1)]
class ExampleType1 { }
[My(X = 2)]
class ExampleType2 { }
static void PrintCustomAttributes(MetadataReader mr, TypeDefinition t)
{
// Enumerate custom attributes on the type definition
foreach (CustomAttributeHandle attrHandle in t.GetCustomAttributes())
{
CustomAttribute attr = mr.GetCustomAttribute(attrHandle);
// Display the attribute type full name
if (attr.Constructor.Kind == HandleKind.MethodDefinition)
{
MethodDefinition mdef = mr.GetMethodDefinition((MethodDefinitionHandle)attr.Constructor);
TypeDefinition tdef = mr.GetTypeDefinition(mdef.GetDeclaringType());
Console.WriteLine($"Type: {mr.GetString(tdef.Namespace)}.{mr.GetString(tdef.Name)}");
}
else if (attr.Constructor.Kind == HandleKind.MemberReference)
{
MemberReference mref = mr.GetMemberReference((MemberReferenceHandle)attr.Constructor);
if (mref.Parent.Kind == HandleKind.TypeReference)
{
TypeReference tref = mr.GetTypeReference((TypeReferenceHandle)mref.Parent);
Console.WriteLine($"Type: {mr.GetString(tref.Namespace)}.{mr.GetString(tref.Name)}");
}
else if (mref.Parent.Kind == HandleKind.TypeDefinition)
{
TypeDefinition tdef = mr.GetTypeDefinition((TypeDefinitionHandle)mref.Parent);
Console.WriteLine($"Type: {mr.GetString(tdef.Namespace)}.{mr.GetString(tdef.Name)}");
}
}
// Display the attribute value
byte[] data = mr.GetBlobBytes(attr.Value);
Console.Write("Value: ");
for (int i = 0; i < data.Length; i++) Console.Write($"{data[i]:X2} ");
Console.WriteLine();
}
}
static void PrintTypesCustomAttributes(MetadataReader mr)
{
foreach (TypeDefinitionHandle tdh in mr.TypeDefinitions)
{
TypeDefinition t = mr.GetTypeDefinition(tdh);
Console.WriteLine($"{mr.GetString(t.Namespace)}.{mr.GetString(t.Name)}");
PrintCustomAttributes(mr, t);
}
}
Keterangan
Atribut kustom adalah anotasi yang mengaitkan informasi tambahan dengan elemen metadata, seperti rakitan, jenis, atau metode. Anda dapat menggunakan GetCustomAttribute(CustomAttributeHandle) metode untuk mendapatkan instans atribut kustom. Untuk informasi selengkapnya tentang atribut di .NET, lihat Memperluas metadata menggunakan atribut.
Properti
Constructor |
Mendapatkan konstruktor ( MethodDefinitionHandle atau MemberReferenceHandle) dari jenis atribut kustom. |
Parent |
Mendapatkan handel entitas metadata tempat atribut diterapkan. |
Value |
Mendapatkan nilai atribut . |
Metode
DecodeValue<TType>(ICustomAttributeTypeProvider<TType>) |
Mendekode argumen yang dikodekan dalam blob nilai. |