ConditionalAttribute Osztály

Definíció

Azt jelzi a fordítóknak, hogy egy metódusmeghívást vagy attribútumot figyelmen kívül kell hagyni, hacsak nincs definiálva egy megadott feltételes fordítási szimbólum.

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
Öröklődés
ConditionalAttribute
Attribútumok

Példák

Az alábbi példa bemutatja a ConditionalAttribute használatát. A példa feltételezi, hogy a feltétel a /define fordító beállítással van definiálva . A fordító beállításainak módosításával különböző eredményeket kaphat. A feltételeket igény szerint úgy határozhatja meg, hogy pragmákat használ a mintakódban ahelyett, hogy fordítóbeállításokként azonosítja őket.

#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

Megjegyzések

Az attribútumot ConditionalAttribute metódusokra és osztályokra is alkalmazhatja. Az osztályokban való használata azonban csak azokra a típusokra érvényes, amelyekből Attributeszármazik. ConditionalAttribute vagy figyelmen kívül hagyja, vagy egy fordító figyelmeztetést vagy hibaüzenetet jelenít meg, ha bármilyen más típusra alkalmazza.

A ConditionalAttribute metódusra való alkalmazása azt jelzi a fordítók számára, hogy a metódus hívását nem szabad Microsoft köztes nyelvre (MSIL) fordítani, kivéve, ha a ConditionalAttribute társított feltételes fordítási szimbólum van meghatározva. Fordítási hibát fog kapni Visual Studio, ha ezt az attribútumot olyan metódusra alkalmazza, amely nem ad vissza semmisséget. ConditionalAttribute Az attribútumra való alkalmazás azt jelzi, hogy az attribútumot csak a feltételes fordítási szimbólum definiálása után szabad kibocsátani a metaadatokra. A metódusnak vagy attribútumnak átadott argumentumokat a fordító továbbra is ellenőrzi.

A feltételes fordítási szimbólumok meghatározásához az alábbi technikákat használhatja:

  • A fordító parancssori beállításainak használata; például a /define:DEBUG.

  • Környezeti változók használata az operációs rendszerhéjban; például állítsa be a DEBUG=1 értéket.

  • Pragmas használata a forráskódban; adja meg például a fordítási változót az alábbiak szerint:

    #define DEBUG
    
    #Const DEBUG=True
    

    A változó nem definiálásához használja a következőt:

    #undef DEBUG
    
    #Const DEBUG=False
    

A Common Language Specification (CLS) szabványnak megfelelő fordítók figyelmen kívül hagyhatók ConditionalAttribute. A C#, F#, Visual Basic és C++ fordítók támogatják ConditionalAttribute; a JScript-fordító nem támogatja az attribútumot.

Note

A Visual Basic a AddressOf operátort ez az attribútum nem érinti. Például mindig meghívjadelegate, bár Call delegate() lehet, Call CType(AddressOf delegate, Action) hogy nem.

ConditionalAttributeaz osztályokban és Trace az osztályokban Debug meghatározott metódusokra lesz alkalmazva.

Az attribútumok használatáról további információt az Attribútumok című témakörben talál.

Konstruktorok

Name Description
ConditionalAttribute(String)

Inicializálja a ConditionalAttribute osztály új példányát.

Tulajdonságok

Name Description
ConditionString

Lekéri az attribútumhoz társított feltételes fordítási ConditionalAttribute szimbólumot.

TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes: