Switch Switch Switch Switch Class

Definizione

Viene fornita la classe di base astratta per la creazione di nuove opzioni di debug e tracciatura.Provides an abstract base class to create new debugging and tracing switches.

public ref class Switch abstract
public abstract class Switch
type Switch = class
Public MustInherit Class Switch
Ereditarietà
SwitchSwitchSwitchSwitch
Derivato

Esempi

Nell'esempio seguente viene illustrato come definire una nuova Switch classe con quattro livelli di traccia che possono essere utilizzati per tracciare uno stack di chiamate.The following example shows how to define a new Switch class with four levels of tracing that can be used to trace a call stack. È possibile usare l'opzione per instrumentare l'applicazione per la registrazione ogni volta che il metodo viene inserito o terminato.You can use the switch to instrument your application to log each time the method is entered or exited.

Nel primo esempio viene creata l'enumerazione utilizzata per impostare il livello dell'opzione.The first example creates the enumeration used to set the level of the switch.

// The following are possible values for the new switch.
public enum class 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,
}
' The following are possible values for the new switch.
Public Enum MethodTracingSwitchLevel
    Off = 0
    EnteringMethod = 1
    ExitingMethod = 2
    Both = 3
End Enum 'MethodTracingSwitchLevel

Nell'esempio seguente viene creata la nuova opzione.The following example creates the new switch. Il codice implementa una Level proprietà per impostare il valore della nuova opzione.The code implements a Level property to set the value of the new switch. Levelchiama la proprietà SwitchSetting protetta che assegna il valore alla nuova opzione.Level calls the protected property SwitchSetting that assigns the value to the new switch. Questo esempio implementa anche due proprietà del valutatore per ottenere il valore assegnato dell'opzione.This example also implements two assessor properties to get the assigned value of the switch.

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

public:
    MyMethodTracingSwitch( String^ displayName, String^ description )
       : Switch( displayName, description )
    {}

    property MethodTracingSwitchLevel Level
    {
        MethodTracingSwitchLevel get()
        {
            return level;
        }

       void set( MethodTracingSwitchLevel value )
       {
           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:
    property bool OutputExit
    {
        bool get()
        {
            return outExit;
        }
    }

    property bool OutputEnter
    {
        bool get()
        {
            return outEnter;
        }
    }
};


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 'New


    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 'SetSwitchSetting


    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 'MyMethodTracingSwitch

Nell'esempio seguente viene creata una nuova opzione Mainin.The following example creates a new switch in Main. Crea una nuova opzione e la assegna un valore.It creates a new switch and assigns it a value. Quindi, a seconda delle impostazioni del Commuter, genera messaggi di debug per l'immissione e l'uscita dal metodo.Then, depending on the switch settings, it outputs debugging messages for entering and leaving the method.

public ref class Class1
{
private:

    /* Create an instance of MyMethodTracingSwitch.*/
    static MyMethodTracingSwitch^ mySwitch =
        gcnew 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(gcnew 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.*/
    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 'MyClass

Commenti

Un'opzione fornisce un meccanismo efficiente per controllare l'output di tracciatura e debug in fase di esecuzione usando impostazioni esterne.A switch provides an efficient mechanism for controlling tracing and debugging output at run time using external settings. La Switch classe implementa il comportamento predefinito per le opzioni, consentendo di modificare il livello del commutatore in fase di esecuzione.The Switch class implements default behavior for switches, allowing you to change the switch level at run time.

Questa classe è la classe base per le BooleanSwitch SourceSwitch TraceSwitch classi e.This class is the base class for the BooleanSwitch, SourceSwitch and the TraceSwitch classes. Questi switch soddisfano la maggior parte delle esigenze di debug e di tracciatura.These switches meet most debugging and tracing needs. Per ulteriori informazioni sulle opzioni di traccia, vedere Opzioni di traccia.For more information about trace switches, see Trace Switches.

È necessario abilitare la traccia o il debug per usare un'opzione.You must enable tracing or debugging to use a switch. La sintassi seguente è specifica del compilatore.The following syntax is compiler specific. Se si usano compilatori diversi C# da o Visual Basic, fare riferimento alla documentazione del compilatore.If you use compilers other than C# or Visual Basic, refer to the documentation for your compiler.

  • Per abilitare il debug C#in, aggiungere /d:DEBUG il flag alla riga di comando del compilatore quando si compila il codice oppure è possibile #define DEBUG aggiungerlo all'inizio del file.To enable debugging in C#, add the /d:DEBUG flag to the compiler command line when you compile your code, or you can add #define DEBUG to the top of your file. In Visual Basic aggiungere il /d:DEBUG=True flag alla riga di comando del compilatore.In Visual Basic, add the /d:DEBUG=True flag to the compiler command line.

  • Per abilitare la traccia usando C#in, aggiungere /d:TRACE il flag alla riga di comando del compilatore quando si compila il codice oppure #define TRACE aggiungerlo all'inizio del file.To enable tracing using in C#, add the /d:TRACE flag to the compiler command line when you compile your code, or add #define TRACE to the top of your file. In Visual Basic aggiungere il /d:TRACE=True flag alla riga di comando del compilatore.In Visual Basic, add the /d:TRACE=True flag to the compiler command line.

Per impostare il livello del commutire, modificare il file di configurazione che corrisponde al nome dell'applicazione.To set the level of your switch, edit the configuration file that corresponds to the name of your application. All'interno di questo file è possibile aggiungere un'opzione e impostarne il valore, rimuovere un'opzione o deselezionare tutte le opzioni precedentemente impostate dall'applicazione.Within this file, you can add a switch and set its value, remove a switch, or clear all the switches previously set by the application. Il file di configurazione deve essere formattato come nell'esempio seguente:The configuration file should be formatted like the following example:

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

In questa sezione di configurazione di BooleanSwitch esempio viene DisplayName definito un oggetto mySwitch con la Enabled proprietà impostata su truee il valore impostato su.This example configuration section defines a BooleanSwitch with the DisplayName property set to mySwitch and the Enabled value set to true. All'interno dell'applicazione, è possibile usare il valore di opzione configurato creando BooleanSwitch un con lo stesso nome, come illustrato nell'esempio di codice seguente.Within your application, you can use the configured switch value by creating a BooleanSwitch with the same name, as shown in the following code example.

private:
    static BooleanSwitch^ boolSwitch = gcnew BooleanSwitch("mySwitch",
        "Switch in config file");

public:
    static void Main( )
    {
        //...
        Console::WriteLine("Boolean switch {0} configured as {1}",
            boolSwitch->DisplayName, ((Boolean^)boolSwitch->Enabled)->ToString());
        if (boolSwitch->Enabled)
        {
            //...
        }
    }
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)
    {
        //...
    }
}

Note per gli eredi

Se sono necessari livelli di traccia o meccanismi per l'impostazione di livelli di commutazione diversi da BooleanSwitchquelli SourceSwitch forniti TraceSwitchda, e, è Switchpossibile ereditare da.If you need trace levels, or mechanisms for setting switch levels different from those provided by BooleanSwitch, SourceSwitch and TraceSwitch, you can inherit from Switch. Quando si eredita da questa classe, è necessario implementare il SwitchSetting metodo.When inheriting from this class, you must implement the SwitchSetting method.

Costruttori

Switch(String, String) Switch(String, String) Switch(String, String) Switch(String, String)

Inizializza una nuova istanza della classe Switch.Initializes a new instance of the Switch class.

Switch(String, String, String) Switch(String, String, String) Switch(String, String, String) Switch(String, String, String)

Inizializza una nuova istanza della classe Switch specificando il nome visualizzato, la descrizione e il valore predefinito per l'opzione.Initializes a new instance of the Switch class, specifying the display name, description, and default value for the switch.

Proprietà

Attributes Attributes Attributes Attributes

Ottiene gli attributi di opzione personalizzati definiti nel file di configurazione dell'applicazione.Gets the custom switch attributes defined in the application configuration file.

Description Description Description Description

Ottiene una descrizione dell'opzione.Gets a description of the switch.

DisplayName DisplayName DisplayName DisplayName

Ottiene un nome utilizzato per identificare l'opzione.Gets a name used to identify the switch.

SwitchSetting SwitchSetting SwitchSetting SwitchSetting

Ottiene o imposta il nome corrente per questa opzione.Gets or sets the current setting for this switch.

Value Value Value Value

Ottiene o imposta il valore dell'opzione.Gets or sets the value of the switch.

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetSupportedAttributes() GetSupportedAttributes() GetSupportedAttributes() GetSupportedAttributes()

Ottiene gli attributi personalizzati supportati dall'opzione.Gets the custom attributes supported by the switch.

GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
OnSwitchSettingChanged() OnSwitchSettingChanged() OnSwitchSettingChanged() OnSwitchSettingChanged()

Viene richiamato quando si modifica la proprietà SwitchSetting.Invoked when the SwitchSetting property is changed.

OnValueChanged() OnValueChanged() OnValueChanged() OnValueChanged()

Viene richiamato quando si modifica la proprietà Value.Invoked when the Value property is changed.

ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a

Vedi anche