Sdílet prostřednictvím


Switch Třída

Definice

Poskytuje abstraktní základní třídu pro vytvoření nových přepínačů ladění a trasování.

public ref class Switch abstract
public abstract class Switch
type Switch = class
Public MustInherit Class Switch
Dědičnost
Switch
Odvozené

Příklady

Následující příklad ukazuje, jak definovat novou Switch třídu se čtyřmi úrovněmi trasování, které lze použít k trasování zásobníku volání. Přepínač můžete použít k instrumentaci aplikace k protokolování při každém zadání nebo ukončení metody.

První příklad vytvoří výčet použitý k nastavení úrovně přepínače.

// The following are possible values for the new switch.
public enum MethodTracingSwitchLevel
{
    Off = 0,
    EnteringMethod = 1,
    ExitingMethod = 2,
    Both = 3,
}
' The following are possible values for the new switch.
Public Enum MethodTracingSwitchLevel
    Off = 0
    EnteringMethod = 1
    ExitingMethod = 2
    Both = 3
End Enum 'MethodTracingSwitchLevel

Následující příklad vytvoří nový přepínač. Kód implementuje Level vlastnost pro nastavení hodnoty nového přepínače. Level volá chráněnou vlastnost SwitchSetting , která přiřadí hodnotu novému přepínači. Tento příklad také implementuje dvě vlastnosti vyhodnocovače, aby získal přiřazenou hodnotu přepínače.

public class MyMethodTracingSwitch : Switch
{
    protected bool outExit;
    protected bool outEnter;
    protected MethodTracingSwitchLevel level;

    public MyMethodTracingSwitch(string displayName, string description) :
        base(displayName, description)
    {
    }

    public MethodTracingSwitchLevel Level
    {
        get
        {
            return level;
        }
        set
        {
            SetSwitchSetting((int)value);
        }
    }

    protected void SetSwitchSetting(int value)
    {
        if (value < 0)
        {
            value = 0;
        }
        if (value > 3)
        {
            value = 3;
        }

        level = (MethodTracingSwitchLevel)value;

        outEnter = false;
        if ((value == (int)MethodTracingSwitchLevel.EnteringMethod) ||
            (value == (int)MethodTracingSwitchLevel.Both))
        {
            outEnter = true;
        }

        outExit = false;
        if ((value == (int)MethodTracingSwitchLevel.ExitingMethod) ||
            (value == (int)MethodTracingSwitchLevel.Both))
        {
            outExit = true;
        }
    }

    public bool OutputExit
    {
        get
        {
            return outExit;
        }
    }

    public bool OutputEnter
    {
        get
        {
            return outEnter;
        }
    }
}
Public Class MyMethodTracingSwitch
    Inherits Switch
    Protected outExit As Boolean
    Protected outEnter As Boolean
    Protected myLevel As MethodTracingSwitchLevel
    
    Public Sub New(displayName As String, description As String)
        MyBase.New(displayName, description)
    End Sub


    Public Property Level() As MethodTracingSwitchLevel
        Get
            Return myLevel
        End Get
        Set
            SetSwitchSetting(CInt(value))
        End Set
    End Property


    Protected Sub SetSwitchSetting(value As Integer)
        If value < 0 Then
            value = 0
        End If
        If value > 3 Then
            value = 3
        End If

        myLevel = CType(value, MethodTracingSwitchLevel)

        outEnter = False
        If value = CInt(MethodTracingSwitchLevel.EnteringMethod) Or _
            value = CInt(MethodTracingSwitchLevel.Both) Then

            outEnter = True
        End If

        outExit = False
        If value = CInt(MethodTracingSwitchLevel.ExitingMethod) Or _
            value = CInt(MethodTracingSwitchLevel.Both) Then

            outExit = True
        End If
    End Sub


    Public ReadOnly Property OutputExit() As Boolean
        Get
            Return outExit
        End Get
    End Property


    Public ReadOnly Property OutputEnter() As Boolean
        Get
            Return outEnter
        End Get
    End Property
End Class

Následující příklad vytvoří nový přepínač v Main. Vytvoří nový přepínač a přiřadí ho jako hodnotu. V závislosti na nastavení přepínače pak výstupem zprávy ladění pro zadávání a opuštění metody.

public class Class1
{
    /* Create an instance of MyMethodTracingSwitch.*/
    static MyMethodTracingSwitch mySwitch =
        new MyMethodTracingSwitch("Methods", "Trace entering and exiting method");

    public static void Main()
    {
        // Add the console listener to see trace messages as console output
        Trace.Listeners.Add(new ConsoleTraceListener(true));
        Debug.AutoFlush = true;

        // Set the switch level to both enter and exit
        mySwitch.Level = MethodTracingSwitchLevel.Both;

        // Write a diagnostic message if the switch is set to entering.
        Debug.WriteLineIf(mySwitch.OutputEnter, "Entering Main");

        // Insert code to handle processing here...

        // Write another diagnostic message if the switch is set to exiting.
        Debug.WriteLineIf(mySwitch.OutputExit, "Exiting Main");
    }
}
Public Class Class1
    ' Create an instance of MyMethodTracingSwitch.
    Private Shared mySwitch As New _
        MyMethodTracingSwitch("Methods", "Trace entering and exiting method")

    Public Shared Sub Main()
        ' Add the console listener to see trace messages as console output
        Trace.Listeners.Add(New ConsoleTraceListener(True))
        Debug.AutoFlush = True

        ' Set the switch level to both enter and exit
        mySwitch.Level = MethodTracingSwitchLevel.Both

        ' Write a diagnostic message if the switch is set to entering.
        Debug.WriteLineIf(mySwitch.OutputEnter, "Entering Main")

        ' Insert code to handle processing here...

        ' Write another diagnostic message if the switch is set to exiting.
        Debug.WriteLineIf(mySwitch.OutputExit, "Exiting Main")
    End Sub
End Class

Poznámky

Přepínač poskytuje efektivní mechanismus pro řízení trasování a ladění výstupu za běhu pomocí externích nastavení. Třída Switch implementuje výchozí chování přepínačů, což umožňuje změnit úroveň přepínače za běhu.

Tato třída je základní třídou pro BooleanSwitch, SourceSwitcha TraceSwitch třídy. Tyto přepínače splňují většinu potřeb ladění a trasování. Další informace o přepínačích trasování naleznete v tématu Přepínače trasování.

Pokud chcete použít přepínač, musíte povolit trasování nebo ladění. Následující syntaxe je specifická pro kompilátor. Pokud používáte jiné kompilátory než C# nebo Visual Basic, projděte si dokumentaci pro váš kompilátor.

  • Pokud chcete povolit ladění v jazyce C#, přidejte /d:DEBUG příznak do příkazového řádku kompilátoru při kompilaci kódu nebo můžete přidat #define DEBUG na začátek souboru. V jazyce Visual Basic přidejte /d:DEBUG=True příznak do příkazového řádku kompilátoru.

  • Pokud chcete povolit trasování pomocí jazyka C#, přidejte /d:TRACE příznak do příkazového řádku kompilátoru při kompilaci kódu nebo přidejte #define TRACE na začátek souboru. V jazyce Visual Basic přidejte /d:TRACE=True příznak do příkazového řádku kompilátoru.

Pokud chcete nastavit úroveň přepínače v aplikaci .NET Framework, upravte konfigurační soubor, který odpovídá názvu vaší aplikace. V tomto souboru můžete přidat přepínač a nastavit jeho hodnotu, odebrat přepínač nebo vymazat všechny přepínače dříve nastavené aplikací. Konfigurační soubor by měl být formátovaný jako v následujícím příkladu:

<configuration>
  <system.diagnostics>
    <switches>
      <add name="mySwitch" value="true" />
    </switches>
  </system.diagnostics>
</configuration>

Tento příklad konfigurační oddíl definuje BooleanSwitch s DisplayName vlastností nastavenou mySwitch na a hodnotu nastavenou Enabled na true. V rámci aplikace můžete použít nakonfigurovanou hodnotu přepínače vytvořením BooleanSwitch se stejným názvem, jak je znázorněno v následujícím příkladu kódu.

private static BooleanSwitch boolSwitch = new BooleanSwitch("mySwitch",
    "Switch in config file");

public static void Main()
{
    //...
    Console.WriteLine("Boolean switch {0} configured as {1}",
        boolSwitch.DisplayName, boolSwitch.Enabled.ToString());
    if (boolSwitch.Enabled)
    {
        //...
    }
}

Poznámky pro implementátory

Pokud potřebujete úrovně trasování nebo mechanismy pro nastavení úrovní přepínače odlišných od těch, které BooleanSwitchSourceSwitch poskytuje , a TraceSwitch, můžete dědit z Switch. Při dědění z této třídy je nutné implementovat metodu SwitchSetting .

Konstruktory

Name Description
Switch(String, String, String)

Inicializuje novou instanci Switch třídy, určuje zobrazovaný název, popis a výchozí hodnotu přepínače.

Switch(String, String)

Inicializuje novou instanci Switch třídy.

Vlastnosti

Name Description
Attributes

Získá vlastní přepínače atributy definované v konfiguračním souboru aplikace.

DefaultValue

Získá výchozí hodnotu přiřazenou v konstruktoru.

Description

Získá popis přepínače.

DisplayName

Získá název použitý k identifikaci přepínače.

SwitchSetting

Získá nebo nastaví aktuální nastavení pro tento přepínač.

Value

Získá nebo nastaví hodnotu přepínače.

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetSupportedAttributes()

Získá vlastní atributy podporované přepínačem.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
OnSwitchSettingChanged()

Vyvolána při SwitchSetting změně vlastnosti.

OnValueChanged()

Vyvolána při Value změně vlastnosti.

Refresh()

Aktualizuje konfigurační data trasování.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Událost

Name Description
Initializing

Nastane, když Switch je potřeba inicializovat.

Platí pro

Viz také