ConditionalAttribute Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Geeft aan compilers aan dat een methodeaanroep of -kenmerk moet worden genegeerd, tenzij een opgegeven symbool voor voorwaardelijke compilatie is gedefinieerd.
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
- Overname
- Kenmerken
Voorbeelden
In het volgende voorbeeld ziet u het gebruik van ConditionalAttribute. In het voorbeeld wordt ervan uitgegaan dat de voorwaarde is gedefinieerd met de optie /define compiler. U kunt verschillende resultaten verkrijgen door de compileroptie te wijzigen. U kunt desgewenst de voorwaarden definiëren met behulp van pragma's in de voorbeeldcode in plaats van ze te identificeren als compileropties.
#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
Opmerkingen
U kunt het ConditionalAttribute kenmerk toepassen op methoden en klassen. Het gebruik ervan op klassen is echter alleen geldig voor typen die zijn afgeleid van Attribute. ConditionalAttribute wordt genegeerd of er wordt een compilerwaarschuwing of foutbericht gegenereerd als u deze toepast op een ander type.
Het toepassen van ConditionalAttribute op een methode geeft aan dat een aanroep naar de methode niet moet worden gecompileerd in Microsoft tussenliggende taal (MSIL), tenzij het symbool voor voorwaardelijke compilatie dat is gekoppeld aan ConditionalAttribute is gedefinieerd. U krijgt een compilatiefout in Visual Studio als u dit kenmerk toepast op een methode die geen ongeldige waarde retourneert. Toepassen op ConditionalAttribute een kenmerk geeft aan dat het kenmerk niet mag worden verzonden naar metagegevens, tenzij het symbool voor voorwaardelijke compilatie is gedefinieerd. Alle argumenten die worden doorgegeven aan de methode of het kenmerk, worden nog steeds door de compiler getypt.
U kunt de volgende technieken gebruiken om voorwaardelijke compilatiesymbolen te definiëren:
Opdrachtregelopties voor compiler gebruiken; bijvoorbeeld /define:DEBUG.
Omgevingsvariabelen gebruiken in de shell van het besturingssysteem; Stel bijvoorbeeld DEBUG=1 in.
Gebruik pragma's in de broncode; Definieer bijvoorbeeld de compilatievariabele als volgt:
#define DEBUG#Const DEBUG=TrueAls u de variabele ongedaan wilt maken, gebruikt u het volgende:
#undef DEBUG#Const DEBUG=False
Compilers die voldoen aan de Common Language Specification (CLS) zijn toegestaan om te negeren ConditionalAttribute. De C#-, F#-, Visual Basic- en C++-compilers ondersteunen ConditionalAttribute; de JScript-compiler biedt geen ondersteuning voor het kenmerk.
Note
In Visual Basic wordt de operator AddressOf niet beïnvloed door dit kenmerk. Wordt bijvoorbeeld Call CType(AddressOf delegate, Action) altijd aangeroepen delegate, hoewel Call delegate() dit niet mogelijk is.
ConditionalAttribute wordt toegepast op de methoden die zijn gedefinieerd in de Debug en Trace klassen.
Zie Kenmerken voor meer informatie over het gebruik van kenmerken.
Constructors
| Name | Description |
|---|---|
| ConditionalAttribute(String) |
Initialiseert een nieuw exemplaar van de ConditionalAttribute klasse. |
Eigenschappen
| Name | Description |
|---|---|
| ConditionString |
Hiermee wordt het symbool voor voorwaardelijke compilatie opgehaald dat is gekoppeld aan het ConditionalAttribute kenmerk. |
| TypeId |
Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id. (Overgenomen van Attribute) |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| GetHashCode() |
Retourneert de hash-code voor dit exemplaar. (Overgenomen van Attribute) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| IsDefaultAttribute() |
Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse. (Overgenomen van Attribute) |
| Match(Object) |
Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1). (Overgenomen van Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven. (Overgenomen van Attribute) |