ConditionalAttribute Classe
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.
Indique aux compilateurs qu'un appel ou un attribut de méthode doit être ignoré, sauf si un symbole de compilation conditionnelle spécifié est défini.
public ref class ConditionalAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)]
public sealed class ConditionalAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true)]
[System.Serializable]
public sealed class ConditionalAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ConditionalAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)>]
type ConditionalAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true)>]
[<System.Serializable>]
type ConditionalAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ConditionalAttribute = class
inherit Attribute
Public NotInheritable Class ConditionalAttribute
Inherits Attribute
- Héritage
- Attributs
Exemples
L’exemple suivant illustre l’utilisation de ConditionalAttribute. L’exemple suppose que la condition est définie avec l’option /define compiler. Vous pouvez obtenir différents résultats en modifiant l’option du compilateur. Vous pouvez éventuellement définir les conditions à l’aide de pragmas dans l’exemple de code au lieu de les identifier comme options du compilateur.
#define CONDITION1
#define CONDITION2
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
Console.WriteLine("Calling Method1");
Method1(3);
Console.WriteLine("Calling Method2");
Method2();
Console.WriteLine("Using the Debug class");
Debug.Listeners.Add(new ConsoleTraceListener());
Debug.WriteLine("DEBUG is defined");
}
[Conditional("CONDITION1")]
public static void Method1(int x)
{
Console.WriteLine("CONDITION1 is defined");
}
[Conditional("CONDITION1"), Conditional("CONDITION2")]
public static void Method2()
{
Console.WriteLine("CONDITION1 or CONDITION2 is defined");
}
}
/*
When compiled as shown, the application (named ConsoleApp)
produces the following output.
Calling Method1
CONDITION1 is defined
Calling Method2
CONDITION1 or CONDITION2 is defined
Using the Debug class
DEBUG is defined
*/
#Const CONDITION1 = True
#Const CONDITION2 = True
Imports System.Diagnostics
Class Test
Shared Sub Main()
Console.WriteLine("Calling Method1")
Method1(3)
Console.WriteLine("Calling Method2")
Method2()
Console.WriteLine("Using the Debug class")
Debug.Listeners.Add(New ConsoleTraceListener())
Debug.WriteLine("DEBUG is defined")
End Sub
<ConditionalAttribute("CONDITION1")> _
Shared Sub Method1(x As Integer)
Console.WriteLine("CONDITION1 is defined")
End Sub
<ConditionalAttribute("CONDITION1"), ConditionalAttribute("CONDITION2")> _
Shared Sub Method2()
Console.WriteLine("CONDITION1 or CONDITIOIN2 is defined")
End Sub
End Class
' When compiled as shown, the application (named ConsoleApp)
' produces the following output.
'Calling Method1
'CONDITION1 is defined
'Calling Method2
'CONDITION1 or CONDITION2 is defined
'Using the Debug class
'DEBUG is defined
Remarques
Vous pouvez appliquer l’attribut ConditionalAttribute aux méthodes et aux classes. Toutefois, son utilisation sur les classes est valide uniquement pour les types dérivés de Attribute. ConditionalAttribute soit sera ignoré, soit génère un message d’avertissement ou d’erreur du compilateur si vous l’appliquez à un autre type.
L’application de ConditionalAttribute à une méthode indique aux compilateurs qu’un appel à la méthode ne doit pas être compilé dans Microsoft langage intermédiaire (MSIL), sauf si le symbole de compilation conditionnelle associé à ConditionalAttribute est défini. Vous obtiendrez une erreur de compilation dans Visual Studio si vous appliquez cet attribut à une méthode qui ne retourne pas void. L’application ConditionalAttribute à un attribut indique que l’attribut ne doit pas être émis dans les métadonnées, sauf si le symbole de compilation conditionnelle est défini. Tous les arguments passés à la méthode ou à l’attribut sont toujours vérifiés par le compilateur.
Vous pouvez utiliser les techniques suivantes pour définir des symboles de compilation conditionnelle :
Utiliser les options de ligne de commande du compilateur ; par exemple, /define :DEBUG.
Utilisez des variables d’environnement dans l’interpréteur de commandes du système d’exploitation ; par exemple, définissez DEBUG=1.
Utilisez des pragmas dans le code source ; par exemple, définissez la variable de compilation comme suit :
#define DEBUG#Const DEBUG=TruePour annuler la définition de la variable, utilisez les éléments suivants :
#undef DEBUG#Const DEBUG=False
Les compilateurs qui respectent la spécification clS (Common Language Specification) sont autorisés à ignorer ConditionalAttribute. Les compilateurs C#, F#, Visual Basic et C++ prennent en charge ConditionalAttribute ; le compilateur JScript ne prend pas en charge l’attribut.
Note
Dans Visual Basic, l’opérateur AddressOf n’est pas affecté par cet attribut. Par exemple, Call CType(AddressOf delegate, Action) toujours appelle delegate, bien que Call delegate() ce ne soit pas le cas.
ConditionalAttribute est appliqué aux méthodes définies dans les Debug classes et Trace les classes.
Pour plus d’informations sur l’utilisation des attributs, consultez Attributs.
Constructeurs
| Nom | Description |
|---|---|
| ConditionalAttribute(String) |
Initialise une nouvelle instance de la classe ConditionalAttribute. |
Propriétés
| Nom | Description |
|---|---|
| ConditionString |
Obtient le symbole de compilation conditionnelle associé à l’attribut ConditionalAttribute . |
| TypeId |
En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute. (Hérité de Attribute) |
Méthodes
| Nom | Description |
|---|---|
| Equals(Object) |
Retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
| GetHashCode() |
Retourne le code de hachage pour cette instance. (Hérité de Attribute) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| IsDefaultAttribute() |
En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée. (Hérité de Attribute) |
| Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface. (Hérité de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fournit l’accès aux propriétés et méthodes exposées par un objet. (Hérité de Attribute) |