Switch Klas

Definitie

Biedt een abstracte basisklasse voor het maken van nieuwe schakelaars voor foutopsporing en tracering.

public ref class Switch abstract
public abstract class Switch
type Switch = class
Public MustInherit Class Switch
Overname
Switch
Afgeleid

Voorbeelden

In het volgende voorbeeld ziet u hoe u een nieuwe Switch klasse definieert met vier traceringsniveaus die kunnen worden gebruikt om een aanroepstack te traceren. U kunt de switch gebruiken om uw toepassing te instrumenteren om elke keer dat de methode wordt ingevoerd of afgesloten te registreren.

In het eerste voorbeeld wordt de opsomming gemaakt die wordt gebruikt om het niveau van de switch in te stellen.

// 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

In het volgende voorbeeld wordt de nieuwe switch gemaakt. Met de code wordt een Level eigenschap geïmplementeerd om de waarde van de nieuwe switch in te stellen. Level roept de beveiligde eigenschap SwitchSetting aan waarmee de waarde wordt toegewezen aan de nieuwe switch. In dit voorbeeld worden ook twee beoordelingseigenschappen geïmplementeerd om de toegewezen waarde van de switch op te halen.

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

In het volgende voorbeeld wordt een nieuwe switch gemaakt in Main. Er wordt een nieuwe switch gemaakt en deze wordt een waarde toegewezen. Afhankelijk van de switchinstellingen worden er vervolgens foutopsporingsberichten uitgevoerd voor het invoeren en verlaten van de methode.

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

Opmerkingen

Een switch biedt een efficiënt mechanisme voor het beheren van tracerings- en foutopsporingsuitvoer tijdens runtime met behulp van externe instellingen. De Switch klasse implementeert standaardgedrag voor switches, zodat u het switchniveau tijdens runtime kunt wijzigen.

Deze klasse is de basisklasse voor de BooleanSwitch, SourceSwitchen TraceSwitch klassen. Deze switches voldoen aan de meeste foutopsporings- en traceringsbehoeften. Zie Trace switches voor meer informatie over traceringsswitches.

U moet tracering of foutopsporing inschakelen om een switch te kunnen gebruiken. De volgende syntaxis is specifiek voor compileren. Als u andere compilers dan C# of Visual Basic gebruikt, raadpleegt u de documentatie voor uw compiler.

  • Als u foutopsporing in C# wilt inschakelen, voegt u de /d:DEBUG vlag toe aan de opdrachtregel van de compiler wanneer u uw code compileert of kunt u toevoegen #define DEBUG aan het begin van het bestand. Voeg in Visual Basic de vlag /d:DEBUG=True toe aan de opdrachtregel van de compiler.

  • Als u tracering wilt inschakelen met behulp van C#, voegt u de /d:TRACE vlag toe aan de opdrachtregel van de compiler wanneer u uw code compileert of voegt u deze toe #define TRACE aan het begin van het bestand. Voeg in Visual Basic de vlag /d:TRACE=True toe aan de opdrachtregel van de compiler.

Als u het niveau van uw switch in een .NET Framework-app wilt instellen, bewerkt u het configuratiebestand dat overeenkomt met de naam van uw toepassing. In dit bestand kunt u een switch toevoegen en de bijbehorende waarde instellen, een schakeloptie verwijderen of alle schakelopties wissen die eerder door de toepassing zijn ingesteld. Het configuratiebestand moet worden opgemaakt zoals in het volgende voorbeeld:

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

In dit voorbeeld van de configuratiesectie wordt een BooleanSwitch met de DisplayName eigenschap gedefinieerd waarop mySwitch en de Enabled waarde is ingesteld op true. In uw toepassing kunt u de geconfigureerde switchwaarde gebruiken door een BooleanSwitch met dezelfde naam te maken, zoals wordt weergegeven in het volgende codevoorbeeld.

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)
    {
        //...
    }
}

Notities voor uitvoerders

Als u traceringsniveaus of mechanismen nodig hebt voor het instellen van schakelniveaus die afwijken van die van BooleanSwitch, SourceSwitch en TraceSwitchkunt u overnemen van Switch. Bij het overnemen van deze klasse moet u de SwitchSetting methode implementeren.

Constructors

Name Description
Switch(String, String, String)

Initialiseert een nieuw exemplaar van de Switch klasse, waarbij de weergavenaam, beschrijving en standaardwaarde voor de schakeloptie worden opgegeven.

Switch(String, String)

Initialiseert een nieuw exemplaar van de Switch klasse.

Eigenschappen

Name Description
Attributes

Hiermee haalt u de aangepaste switchkenmerken op die zijn gedefinieerd in het configuratiebestand van de toepassing.

Description

Hiermee wordt een beschrijving van de schakelaar opgegeven.

DisplayName

Hiermee haalt u een naam op die wordt gebruikt om de switch te identificeren.

SwitchSetting

Hiermee haalt u de huidige instelling voor deze switch op of stelt u deze in.

Value

Hiermee haalt u de waarde van de switch op of stelt u deze in.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetSupportedAttributes()

Hiermee haalt u de aangepaste kenmerken op die door de switch worden ondersteund.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnSwitchSettingChanged()

Aangeroepen wanneer de SwitchSetting eigenschap wordt gewijzigd.

OnValueChanged()

Aangeroepen wanneer de Value eigenschap wordt gewijzigd.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Zie ook