MemberInfo.IsDefined(Type, Boolean) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
En cas de substitution dans une classe dérivée, indique si un ou plusieurs attributs du type spécifié ou de ses types dérivés sont appliqués à ce membre.
public:
abstract bool IsDefined(Type ^ attributeType, bool inherit);
public abstract bool IsDefined (Type attributeType, bool inherit);
abstract member IsDefined : Type * bool -> bool
Public MustOverride Function IsDefined (attributeType As Type, inherit As Boolean) As Boolean
Paramètres
- attributeType
- Type
Type de l'attribut personnalisé à rechercher. La recherche inclut les types dérivés.
- inherit
- Boolean
true
pour rechercher la chaîne d’héritage de ce membre afin de trouver les attributs ; sinon, false
. Ce paramètre est ignoré pour les propriétés et les événements.
Retours
true
si une ou plusieurs instances de attributeType
ou de l'un de ses types dérivés sont appliquées à ce membre ; sinon, false
.
Implémente
Exemples
L’exemple suivant détermine si l’attribut spécifié est appliqué au membre spécifié.
using namespace System;
using namespace System::Reflection;
// Define a custom attribute with one named parameter.
[AttributeUsage(AttributeTargets::All)]
public ref class MyAttribute: public Attribute
{
private:
String^ myName;
public:
MyAttribute( String^ name )
{
myName = name;
}
property String^ Name
{
String^ get()
{
return myName;
}
}
};
// Define a class that has the custom attribute associated with one of its members.
public ref class MyClass1
{
public:
[MyAttribute("This is an example attribute.")]
void MyMethod( int i ){}
};
int main()
{
try
{
// Get the type of MyClass1.
Type^ myType = MyClass1::typeid;
// Get the members associated with MyClass1.
array<MemberInfo^>^myMembers = myType->GetMembers();
// Display the attributes for each of the members of MyClass1.
for ( int i = 0; i < myMembers->Length; i++ )
{
// Display the attribute if it is of type MyAttribute.
if ( myMembers[ i ]->IsDefined( MyAttribute::typeid, false ) )
{
array<Object^>^myAttributes = myMembers[ i ]->GetCustomAttributes( MyAttribute::typeid, false );
Console::WriteLine( "\nThe attributes of type MyAttribute for the member {0} are: \n", myMembers[ i ] );
for ( int j = 0; j < myAttributes->Length; j++ )
// Display the value associated with the attribute.
Console::WriteLine( "The value of the attribute is : \"{0}\"",
(safe_cast<MyAttribute^>(myAttributes[ j ]))->Name );
}
}
}
catch ( Exception^ e )
{
Console::WriteLine( "An exception occurred: {0}", e->Message );
}
}
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_IsDefined
{
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++)
{
// Display the attribute if it is of type MyAttribute.
if(myMembers[i].IsDefined(typeof(MyAttribute), false))
{
Object[] myAttributes = myMembers[i].GetCustomAttributes(typeof(MyAttribute), false);
Console.WriteLine("\nThe attributes of type MyAttribute for the member {0} are: \n",
myMembers[i]);
for(int j = 0; j < myAttributes.Length; j++)
// Display the value associated with the attribute.
Console.WriteLine("The value of the attribute is : \"{0}\"",
((MyAttribute)myAttributes[j]).Name);
}
}
}
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_IsDefined
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
' Display the attribute if it is of type MyAttribute.
If myMembers(i).IsDefined(GetType(MyAttribute), False) Then
Dim myAttributes As [Object]() = myMembers(i).GetCustomAttributes(GetType(MyAttribute), False)
Console.WriteLine(ControlChars.Cr + "The attributes of type MyAttribute for the member {0} are: " + ControlChars.Cr, myMembers(i))
Dim j As Integer
For j = 0 To myAttributes.Length - 1
' Display the value associated with the attribute.
Console.WriteLine("The value of the attribute is : ""{0}""", CType(myAttributes(j), MyAttribute).Name)
Next j
End If
Next i
Catch e As Exception
Console.WriteLine("An exception occurred: {0}", e.Message)
End Try
End Sub
End Class
Remarques
Cette méthode ignore le paramètre pour les inherit
propriétés et les événements. Pour rechercher des attributs sur des propriétés et des événements dans la chaîne d’héritage, utilisez les surcharges appropriées de la Attribute.IsDefined méthode .
Notes
Dans le .NET Framework version 2.0, cette méthode retourne true
si un type, une méthode ou un constructeur a des attributs de sécurité stockés dans le nouveau format de métadonnées. Les assemblys compilés avec la version 2.0 utilisent ce format. Les assemblys dynamiques et les assemblys compilés avec des versions antérieures du .NET Framework utilisent l’ancien format XML. Consultez Émission d’attributs de sécurité déclaratifs.