MemberInfo.GetCustomAttributes Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Származtatott osztály felülírásakor az erre a tagra alkalmazott egyéni attribútumokat adja vissza.
Túlterhelések
| Name | Description |
|---|---|
| GetCustomAttributes(Boolean) |
Ha egy származtatott osztályban felül van bírálva, a tagra alkalmazott összes egyéni attribútum tömbét adja vissza. |
| GetCustomAttributes(Type, Boolean) |
Ha egy származtatott osztály felül van bírálva, a tagra alkalmazott és a tag által Typeazonosított egyéni attribútumokból álló tömböt ad vissza. |
GetCustomAttributes(Boolean)
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
Ha egy származtatott osztályban felül van bírálva, a tagra alkalmazott összes egyéni attribútum tömbét adja vissza.
public:
abstract cli::array <System::Object ^> ^ GetCustomAttributes(bool inherit);
public abstract object[] GetCustomAttributes(bool inherit);
abstract member GetCustomAttributes : bool -> obj[]
Public MustOverride Function GetCustomAttributes (inherit As Boolean) As Object()
Paraméterek
- inherit
- Boolean
truea tag öröklési láncában való keresés az attribútumok megkereséséhez; egyéb esetben. false Ezt a paramétert a rendszer figyelmen kívül hagyja a tulajdonságok és események esetében.
Válaszok
Olyan tömb, amely a tagra alkalmazott összes egyéni attribútumot tartalmazza, vagy egy nulla elemű tömb, ha nincsenek megadva attribútumok.
Megvalósítás
Kivételek
Ez a tag egy olyan típushoz tartozik, amely a csak tükrözési környezetbe van betöltve. Lásd : Szerelvények betöltése a Reflection-Only-környezetbe.
Egyéni attribútumtípus nem tölthető be.
Példák
Az alábbi példa egy egyéni attribútumot határoz meg, és társítja az attribútumot MyClass.MyMethod, lekéri az attribútumot futásidőben, és megjeleníti az eredményt.
using System;
using System.Reflection;
// Define a custom attribute with one named parameter.
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
private string myName;
public MyAttribute(string name)
{
myName = name;
}
public string Name
{
get
{
return myName;
}
}
}
// Define a class that has the custom attribute associated with one of its members.
public class MyClass1
{
[MyAttribute("This is an example attribute.")]
public void MyMethod(int i)
{
return;
}
}
public class MemberInfo_GetCustomAttributes
{
public static void Main()
{
try
{
// Get the type of MyClass1.
Type myType = typeof(MyClass1);
// Get the members associated with MyClass1.
MemberInfo[] myMembers = myType.GetMembers();
// Display the attributes for each of the members of MyClass1.
for(int i = 0; i < myMembers.Length; i++)
{
Object[] myAttributes = myMembers[i].GetCustomAttributes(true);
if(myAttributes.Length > 0)
{
Console.WriteLine("\nThe attributes for the member {0} are: \n", myMembers[i]);
for(int j = 0; j < myAttributes.Length; j++)
Console.WriteLine("The type of the attribute is {0}.", myAttributes[j]);
}
}
}
catch(Exception e)
{
Console.WriteLine("An exception occurred: {0}", e.Message);
}
}
}
Imports System.Reflection
' Define a custom attribute with one named parameter.
<AttributeUsage(AttributeTargets.All)> Public Class MyAttribute
Inherits Attribute
Private myName As String
Public Sub New(ByVal name As String)
myName = name
End Sub
Public ReadOnly Property Name() As String
Get
Return myName
End Get
End Property
End Class
' Define a class that has the custom attribute associated with one of its members.
Public Class MyClass1
<MyAttribute("This is an example attribute.")> Public Sub MyMethod(ByVal i As Integer)
Return
End Sub
End Class
Public Class MemberInfo_GetCustomAttributes
Public Shared Sub Main()
Try
' Get the type of MyClass1.
Dim myType As Type = GetType(MyClass1)
' Get the members associated with MyClass1.
Dim myMembers As MemberInfo() = myType.GetMembers()
' Display the attributes for each of the members of MyClass1.
Dim i As Integer
For i = 0 To myMembers.Length - 1
Dim myAttributes As [Object]() = myMembers(i).GetCustomAttributes(False)
If myAttributes.Length > 0 Then
Console.WriteLine("The attributes for the member {0} are: ", myMembers(i))
Dim j As Integer
For j = 0 To myAttributes.Length - 1
Console.WriteLine("The type of the attribute is: {0}", myAttributes(j))
Next j
End If
Next i
Catch e As Exception
Console.WriteLine("An exception occurred: {0}.", e.Message)
End Try
End Sub
End Class
Megjegyzések
Ez a metódus figyelmen kívül hagyja a inherit tulajdonságok és események paraméterét. Az öröklési lánc tulajdonságokra és eseményekre vonatkozó attribútumainak kereséséhez használja a Attribute.GetCustomAttributes metódus megfelelő túlterheléseit.
Note
A .NET Framework 2.0-s verziójában ez a metódus visszaadja a metódusok, konstruktorok és típusok biztonsági attribútumait, ha azokat az új metaadatformátumban tárolják. A 2.0-s verzióval összeállított szerelvények ezt a formátumot használják. A .NET-keretrendszer korábbi verzióival összeállított dinamikus szerelvények és szerelvények a régi XML-formátumot használják. Lásd: Deklaratív biztonsági attribútumok kibocsátása.
Lásd még
A következőre érvényes:
GetCustomAttributes(Type, Boolean)
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
- Forrás:
- MemberInfo.cs
Ha egy származtatott osztály felül van bírálva, a tagra alkalmazott és a tag által Typeazonosított egyéni attribútumokból álló tömböt ad vissza.
public:
abstract cli::array <System::Object ^> ^ GetCustomAttributes(Type ^ attributeType, bool inherit);
public abstract object[] GetCustomAttributes(Type attributeType, bool inherit);
abstract member GetCustomAttributes : Type * bool -> obj[]
Public MustOverride Function GetCustomAttributes (attributeType As Type, inherit As Boolean) As Object()
Paraméterek
- attributeType
- Type
A keresendő attribútum típusa. A rendszer csak az ehhez a típushoz hozzárendelhető attribútumokat adja vissza.
- inherit
- Boolean
truea tag öröklési láncában való keresés az attribútumok megkereséséhez; egyéb esetben. false Ezt a paramétert a rendszer figyelmen kívül hagyja a tulajdonságok és események esetében.
Válaszok
A tagra alkalmazott egyéni attribútumok tömbje, vagy nulla elemekkel rendelkező tömb, ha nincs hozzárendelhető attributeType attribútum.
Megvalósítás
Kivételek
Egyéni attribútumtípus nem tölthető be.
Ha attributeType igen null.
Ez a tag egy olyan típushoz tartozik, amely a csak tükrözési környezetbe van betöltve. Lásd : Szerelvények betöltése a Reflection-Only-környezetbe.
Példák
Az alábbi példa egy olyan osztályt BaseClass határoz meg, amely két nem öröklött taggal rendelkezik: egy szál statikus mezőjével total és egy nem CLS-kompatibilis metódussal MethodA. A névvel ellátott DerivedClass osztály örökli BaseClass és felülbírálja annak metódusát MethodA . Vegye figyelembe, hogy a rendszer nem alkalmaz attribútumokat a tagokra DerivedClass. A példa iterálja a tagok azon tagjait DerivedClass , hogy megállapítsák, hogy az CLSCompliantAttributeThreadStaticAttribute adott attribútumot alkalmazták-e rájuk. Ennek inherit következtében truea metódus megkeresi a megadott attribútum öröklési hierarchiáját DerivedClass . Ahogy a példa kimenete is mutatja, a total mező az attribútummal ThreadStaticAttribute van díszítve, a MethodA metódus pedig az CLSCompliantAttribute attribútummal van díszítve.
using System;
public class BaseClass
{
[ThreadStatic] public int total;
[CLSCompliant(false)] public virtual uint MethodA()
{
return (uint) 100;
}
}
public class DerivedClass : BaseClass
{
public override uint MethodA()
{
total++;
return 200;
}
}
public class Example
{
public static void Main()
{
Type t = typeof(DerivedClass);
Console.WriteLine("Members of {0}:", t.FullName);
foreach (var m in t.GetMembers())
{
bool hasAttribute = false;
Console.Write(" {0}: ", m.Name);
if (m.GetCustomAttributes(typeof(CLSCompliantAttribute), true).Length > 0) {
Console.Write("CLSCompliant");
hasAttribute = true;
}
if (m.GetCustomAttributes(typeof(ThreadStaticAttribute), true).Length > 0) {
Console.Write("ThreadStatic");
hasAttribute = true;
}
if (!hasAttribute)
Console.Write("No attributes");
Console.WriteLine();
}
}
}
// The example displays the following output:
// Members of DerivedClass:
// MethodA: CLSCompliant
// ToString: No attributes
// Equals: No attributes
// GetHashCode: No attributes
// typeof: No attributes
// .ctor: No attributes
// total: ThreadStatic
Public Class BaseClass
<ThreadStatic> Public total As Integer
<CLSCompliant(False)> Public Overridable Function MethodA() As UInt32
Return CUInt(100)
End Function
End Class
Public Class DerivedClass : Inherits BaseClass
Public Overrides Function MethodA() As UInt32
total += 1
Return 200
End Function
End Class
Module Example
Public Sub Main()
Dim t As Type = GetType(DerivedClass)
Console.WriteLine("Members of {0}:", t.FullName)
For Each m In t.GetMembers()
Dim hasAttribute As Boolean = False
Console.Write(" {0}: ", m.Name)
If m.GetCustomAttributes(GetType(CLSCompliantAttribute), True).Length > 0 Then
Console.Write("CLSCompliant")
hasAttribute = True
End If
If m.GetCustomAttributes(GetType(ThreadStaticAttribute), True).Length > 0 Then
Console.Write("ThreadStatic")
hasAttribute = True
End If
If Not hasAttribute Then
Console.Write("No attributes")
End If
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' Members of DerivedClass:
' MethodA: CLSCompliant
' ToString: No attributes
' Equals: No attributes
' GetHashCode: No attributes
' GetType: No attributes
' .ctor: No attributes
' total: ThreadStatic
Megjegyzések
Ez a metódus figyelmen kívül hagyja a inherit tulajdonságok és események paraméterét. Az öröklési lánc tulajdonságokra és eseményekre vonatkozó attribútumainak kereséséhez használja a Attribute.GetCustomAttributes metódus megfelelő túlterheléseit.
Note
A .NET Framework 2.0-s verziójában ez a metódus visszaadja a metódusok, konstruktorok és típusok biztonsági attribútumait, ha az attribútumok új metaadat formátumban vannak tárolva. A 2.0-s verzióval összeállított szerelvények ezt a formátumot használják. A .NET-keretrendszer korábbi verzióival összeállított dinamikus szerelvények és szerelvények a régi XML-formátumot használják. Lásd: Deklaratív biztonsági attribútumok kibocsátása.