ConditionalAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Zeigt den Compilern an, dass ein Methodenaufruf oder ein Attribut ignoriert werden soll, wenn kein angegebenes bedingtes Kompilierungssymbol definiert ist.
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
- Vererbung
- Attribute
Beispiele
Das folgende Beispiel veranschaulicht die Verwendung von ConditionalAttribute. Im Beispiel wird davon ausgegangen, dass die Bedingung mit der Compileroption /define definiert ist. Sie können verschiedene Ergebnisse erhalten, indem Sie die Compileroption ändern. Sie können die Bedingungen optional definieren, indem Sie Pragmas im Beispielcode verwenden, anstatt sie als Compileroptionen zu identifizieren.
#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
Hinweise
Sie können das ConditionalAttribute Attribut auf Methoden und Klassen anwenden. Die Verwendung für Klassen ist jedoch nur für Typen gültig, die von Attributeabgeleitet sind. ConditionalAttribute entweder wird ignoriert oder erzeugt eine Compilerwarnung oder Fehlermeldung, wenn Sie sie auf einen anderen Typ anwenden.
Das Anwenden auf ConditionalAttribute eine -Methode gibt für Compiler an, dass ein Aufruf der -Methode nicht in MSIL (Microsoft Intermediate Language) kompiliert werden sollte, es sei denn, das Symbol für ConditionalAttribute die bedingte Kompilierung, dem zugeordnet ist, ist definiert. Sie erhalten einen Kompilierungsfehler in Visual Studio, wenn Sie dieses Attribut auf eine Methode anwenden, die void nicht zurückgibt. Das Anwenden auf ConditionalAttribute ein Attribut gibt an, dass das Attribut nicht an Metadaten ausgegeben werden soll, es sei denn, das Symbol für die bedingte Kompilierung ist definiert. Alle Argumente, die an die Methode oder das Attribut übergeben werden, werden weiterhin vom Compiler typgeprüft.
Sie können die folgenden Techniken verwenden, um Symbole für die bedingte Kompilierung zu definieren:
Verwenden Sie Compiler-Befehlszeilenoptionen. Beispiel : /define:DEBUG.
Verwenden Sie Umgebungsvariablen in der Betriebssystemshell. Legen Sie beispielsweise DEBUG=1 fest.
Verwenden Sie Pragmas im Quellcode. Definieren Sie beispielsweise die Kompilierungsvariable wie folgt:
#define DEBUG
#Const DEBUG=True
Verwenden Sie Folgendes, um die Variable rückgängig zu machen:
#undef DEBUG
#Const DEBUG=False
Compiler, die der CLS -Spezifikation (Common Language Specification) entsprechen, dürfen ignorieren ConditionalAttribute. Die C#-, F#-, Visual Basic- und C++-Compiler unterstützen ConditionalAttribute; der JScript-Compiler unterstützt das Attribut nicht.
Hinweis
In Visual Basic ist der AddressOf
Operator von diesem Attribut nicht betroffen. Ruft z. B. Call CType(AddressOf delegate, Action)
immer auf delegate
, obwohl Call delegate()
möglicherweise nicht.
ConditionalAttribute wird auf die Methoden angewendet, die in den Debug Klassen und Trace definiert sind.
Weitere Informationen zur Verwendung von Attributen finden Sie unter Attribute.
Konstruktoren
ConditionalAttribute(String) |
Initialisiert eine neue Instanz der ConditionalAttribute-Klasse. |
Eigenschaften
ConditionString |
Ruft das dem ConditionalAttribute-Attribut zugeordnete Symbol für die bedingte Kompilierung ab. |
TypeId |
Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab. (Geerbt von Attribute) |
Methoden
Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Geerbt von Attribute) |
GetHashCode() |
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
IsDefaultAttribute() |
Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
Match(Object) |
Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Geerbt von Attribute) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Geerbt von Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Geerbt von Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Geerbt von Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Geerbt von Attribute) |