Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

ConditionalAttribute-Klasse

Aktualisiert: November 2007

Gibt für Compiler an, dass ein Methodenaufruf oder ein Attribut ignoriert werden soll, sofern kein bestimmtes Symbol für die bedingte Kompilierung definiert ist.

Namespace:  System.Diagnostics
Assembly:  mscorlib (in mscorlib.dll)
[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
[ComVisibleAttribute(true)]
public sealed class ConditionalAttribute : Attribute
/** @attribute SerializableAttribute */ 
/** @attribute AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true) */
/** @attribute ComVisibleAttribute(true) */
public final class ConditionalAttribute extends Attribute
public final class ConditionalAttribute extends Attribute

Das ConditionalAttribute-Attribut können Sie auf Methoden und Klassen anwenden. Die Verwendung für Klassen ist jedoch nur für Typen gültig, die von Attribute abgeleitet sind. ConditionalAttribute wird beim Anwenden auf jeden anderen Typ ignoriert oder führt zu einer Compilerwarnung oder einer Fehlermeldung.

y5dw26w3.alert_note(de-de,VS.90).gifHinweis:

In .NET Framework Versionen 1.0 und 1.1 kann das ConditionalAttribute-Attribut nur für Methoden übernommen werden.

Wenn ConditionalAttribute auf eine Methode angewendet wird, gibt dies für Compiler an, dass ein Aufruf der Methode nur dann in MSIL (Microsoft Intermediate Language) kompiliert werden soll, wenn das ConditionalAttribute zugeordnete Symbol für die bedingte Kompilierung definiert ist. Wenn ConditionalAttribute für ein Attribut übernommen wird, gibt dies an, dass das Attribut nur dann in den Metadaten ausgegeben werden soll, wenn das Symbol für die bedingte Kompilierung definiert ist. Alle an die Methode oder das Attribut übergebenen Argumente werden weiterhin vom Compiler auf ihren Typ überprüft.

Symbole für die bedingte Kompilierung können Sie mit den folgenden Verfahren definieren:

  • Befehlszeilenoptionen des Compilers (z. B. /define:DEBUG).

  • Umgebungsvariablen in der Shell des Betriebssystems (z. B. set DEBUG=1).

  • Pragmas im Quellcode (z. B. #define DEBUG, um die Kompilierungsvariable zu definieren, und #undef DEBUG, um die Definition aufzuheben).

CLS-kompatible Compiler (Common Language Specification) sind berechtigt, ConditionalAttribute zu ignorieren. Die C#-, J#- und Visual Basic-Compilers unterstützen ConditionalAttribute; die C++- und JScript-Compiler unterstützen das Attribut nicht.

ConditionalAttribute wird auf die in der Debug-Klasse und der Trace-Klasse definierten Methoden angewendet.

Weitere Informationen zum Verwenden von Attributen finden Sie unter Erweitern von Metadaten mithilfe von Attributen.

Im folgenden Codebeispiel wird die Verwendung des ConditionalAttribute veranschaulicht. Im Beispiel wird davon ausgegangen, dass die Bedingung in der /define-Compileroption definiert ist. Sie können andere Ergebnisse erhalten, indem Sie die Compileroption ändern. Sie können die Bedingungen optional im Beispielcode definieren, statt diese als Compileroptionen zu festzulegen.

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.

csc ConsoleApp.cs
Calling Method1
Calling Method2
Using the Debug class

csc /define:CONDITION1 ConsoleApp.cs
Calling Method1
CONDITION1 is defined
Calling Method2
CONDITION1 or Condition2 is defined
Using the Debug class

csc /define:Condition2 ConsoleApp.cs
Calling Method1
Calling Method2
CONDITION1 or Condition2 is defined
Using the Debug class

csc /define:DEBUG ConsoleApp.cs
Calling Method1
Calling Method2
Using the Debug class
DEBUG is defined
*/


System.Object
  System.Attribute
    System.Diagnostics.ConditionalAttribute
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC, Xbox 360

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0, 1.0

XNA Framework

Unterstützt in: 2.0, 1.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.