Assembly : mscorlib (dans mscorlib.dll)
Syntaxe<SerializableAttribute> _ <ClassInterfaceAttribute(ClassInterfaceType.None)> _ <ComVisibleAttribute(True)> _ <AttributeUsageAttribute(AttributeTargets.All, Inherited:=True, AllowMultiple:=False)> _ Public MustInherit Class Attribute Implements _Attribute
Dim instance As Attribute
[SerializableAttribute] [ClassInterfaceAttribute(ClassInterfaceType.None)] [ComVisibleAttribute(true)] [AttributeUsageAttribute(AttributeTargets.All, Inherited=true, AllowMultiple=false)] public abstract class Attribute : _Attribute
[SerializableAttribute] [ClassInterfaceAttribute(ClassInterfaceType::None)] [ComVisibleAttribute(true)] [AttributeUsageAttribute(AttributeTargets::All, Inherited=true, AllowMultiple=false)] public ref class Attribute abstract : _Attribute
/** @attribute SerializableAttribute() */ /** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ /** @attribute ComVisibleAttribute(true) */ /** @attribute AttributeUsageAttribute(AttributeTargets.All, Inherited=true, AllowMultiple=false) */ public abstract class Attribute implements _Attribute
SerializableAttribute ClassInterfaceAttribute(ClassInterfaceType.None) ComVisibleAttribute(true) AttributeUsageAttribute(AttributeTargets.All, Inherited=true, AllowMultiple=false) public abstract class Attribute implements _Attribute
NotesLa classe Attribute associe les informations système prédéfinies ou les informations personnalisées, définies par l'utilisateur, à un élément cible. Un assembly, une classe, un constructeur, un délégué, une énumération, un événement, un champ, une interface, une méthode, un module de fichier exécutable portable, un paramètre, une propriété, une valeur de retour, une structure ou un autre attribut sont autant d'exemples d'élément cible.
Les informations fournies par un attribut sont également désignées par le terme « métadonnées ». L'application peut examiner les métadonnées au moment de l'exécution pour contrôler la façon dont le programme traite des données, ou avant l'exécution par des outils externes pour contrôler la façon dont l'application elle-même est traitée ou gérée. Par exemple, le .NET Framework prédéfinit et utilise des types d'attribut pour contrôler le comportement au moment de l'exécution, et certains langages de programmation utilisent des types d'attribut pour représenter des fonctionnalités du langage qui ne sont pas directement prises en charge par le système de type commun (CTS, Common Type System) du .NET Framework.
Tous les attributs sont directement ou indirectement dérivés de la classe Attribute. Les attributs peuvent être appliqués à n'importe quel élément cible, plusieurs attributs peuvent être appliqués au même élément cible et les attributs peuvent être hérités par un élément dérivé d'un élément cible. Utilisez la classe AttributeTargets pour spécifier l'élément cible auquel l'attribut est appliqué.
La classe Attribute propose des méthodes utiles pour récupérer les attributs personnalisés et les tester. Pour plus d'informations sur l'utilisation des attributs, consultez Extension des métadonnées à l'aide des attributs.
ExempleL'exemple de code suivant illustre l'utilisation de Attribute.
Imports System 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.
using System; using System.Reflection; namespace CustomAttrCS { // 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 = Pet; } } } // 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. */
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. */
package CustomAttrJSL; import System.*; import System.Reflection.*; public class Animal { protected int pet; public static final int dog = 1; public static final int cat = 2; public static final int bird = 3; public Animal() { pet = 0; } //Animal public Animal(int p) { pet = p; } //Animal public String getPet() { switch (pet) { case 1 : return "Dog"; case 2 : return "Cat"; case 3 : return "Bird"; default : return null; } } //getPet } //Animal // A custom attribute to allow a target to have a pet. /** @attribute System.AttributeUsageAttribute(AttributeTargets.Method) */ public class AnimalTypeAttribute extends Attribute { public AnimalTypeAttribute() { } // The constructor is called when the attribute is set. public AnimalTypeAttribute(int pet) { thePet = new Animal(pet); } //AnimalTypeAttribute // Keep a variable internally... protected Animal thePet; //.. and show a copy to the outside world. /** @property */ public Animal get_Pet() { return thePet; } //get_Pet /** @property */ public void set_Pet(Animal value) { thePet = value; } //set_Pet } //AnimalTypeAttribute // A test class where each method has its own pet. class AnimalTypeTestClass { /** @attribute AnimalType(Animal.dog) */ public void DogMethod() { } //DogMethod /** @attribute AnimalType(Animal.cat) */ public void CatMethod() { } //CatMethod /** @attribute AnimalType(Animal.bird) */ public void BirdMethod() { } //BirdMethod } //AnimalTypeTestClass class DemoClass { public static void main(String[] args) { AnimalTypeTestClass testClass = new AnimalTypeTestClass(); Type type = testClass.GetType(); // Iterate through all the methods of the class. for (int iCtr1 = 0; iCtr1 < type.GetMethods().length; iCtr1++) { MethodInfo mInfo = type.GetMethods()[iCtr1]; // Iterate through all the Attributes for each method. for (int iCtr2 = 0; iCtr2 < Attribute.GetCustomAttributes(mInfo).length; iCtr2++) { Attribute attr = Attribute.GetCustomAttributes(mInfo)[iCtr2]; // Check for the AnimalType attribute. if (attr.GetType(). Equals(AnimalTypeAttribute.class.ToType())) { Console.WriteLine("Method {0} has a pet {1} attribute.", mInfo.get_Name(), ((AnimalTypeAttribute)attr).get_Pet().getPet()); } } } } //main } //DemoClass /* Output: Method DogMethod has a pet Dog attribute. Method CatMethod has a pet Cat attribute. Method BirdMethod has a pet Bird attribute. */
import System; import System.Reflection; import CustomAttrJS; package CustomAttrJS { // 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 AttributeUsage(AttributeTargets.Method) class AnimalTypeAttribute extends Attribute { // The constructor is called when the attribute is set. public function AnimalTypeAttribute(pet : Animal) { thePet = pet; } // Keep a variable internally ... protected var thePet : Animal; // .. and show a copy to the outside world. public function get Pet() : Animal { return thePet; } public function set Pet(pet : Animal) { thePet = pet; } } // A test class where each method has its own pet. class AnimalTypeTestClass { public AnimalTypeAttribute(Animal.Dog) function DogMethod() {} public AnimalTypeAttribute(Animal.Cat) function CatMethod() {} public AnimalTypeAttribute(Animal.Bird) function BirdMethod() {} } } var testClass : AnimalTypeTestClass = new AnimalTypeTestClass(); var type : Type = testClass.GetType(); // Iterate through all the methods of the class. var mInfo : MethodInfo[] = type.GetMethods(); for (var i : int = 0; i < mInfo.length; i++) { // Iterate through all the Attributes for each method. var attr : Attribute[] = Attribute.GetCustomAttributes(mInfo[i]); for (var j : int = 0; j < attr.length; j++) { // Check for the AnimalType attribute. if (attr[j].GetType() == AnimalTypeAttribute) Console.WriteLine( "Method {0} has a pet {1} attribute.", mInfo[i].Name, AnimalTypeAttribute(attr[j]).Pet); } } /* * Output: * Method BirdMethod has a pet Bird attribute. * Method CatMethod has a pet Cat attribute. * Method DogMethod has a pet Dog attribute. * */
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ