Switch Switch Switch Switch Class

Definição

Fornece uma classe base abstrata para criar novos comutadores de rastreamento e depuração.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
Herança
SwitchSwitchSwitchSwitch
Derivado

Exemplos

O exemplo a seguir mostra como definir uma nova Switch classe com quatro níveis de rastreamento que podem ser usados para rastrear uma pilha de chamadas.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. Você pode usar a opção para instrumentar seu aplicativo para registrar cada vez que o método for inserido ou encerrado.You can use the switch to instrument your application to log each time the method is entered or exited.

O primeiro exemplo cria a enumeração usada para definir o nível da opção.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

O exemplo a seguir cria a nova opção.The following example creates the new switch. O código implementa uma Level propriedade para definir o valor do novo comutador.The code implements a Level property to set the value of the new switch. Levelchama a propriedade SwitchSetting protegida que atribui o valor ao novo comutador.Level calls the protected property SwitchSetting that assigns the value to the new switch. Este exemplo também implementa duas propriedades assessor para obter o valor atribuído da opção.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


    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

O exemplo a seguir cria uma nova opção Mainno.The following example creates a new switch in Main. Ele cria um novo comutador e atribui um valor a ele.It creates a new switch and assigns it a value. Em seguida, dependendo das configurações do comutador, ele gera mensagens de depuração para entrar e sair do método.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

Comentários

Uma opção fornece um mecanismo eficiente para controlar o rastreamento e a depuração de saída em tempo de execução usando configurações externas.A switch provides an efficient mechanism for controlling tracing and debugging output at run time using external settings. A Switch classe implementa o comportamento padrão para opções, permitindo que você altere o nível de comutador em tempo de execução.The Switch class implements default behavior for switches, allowing you to change the switch level at run time.

Essa classe é a classe base para o BooleanSwitch SourceSwitch e as TraceSwitch classes.This class is the base class for the BooleanSwitch, SourceSwitch and the TraceSwitch classes. Essas opções atendem à maioria das necessidades de depuração e rastreamento.These switches meet most debugging and tracing needs. Para obter mais informações sobre opções de rastreamento, consulte Opções de rastreamento.For more information about trace switches, see Trace Switches.

Você deve habilitar o rastreamento ou a depuração para usar uma opção.You must enable tracing or debugging to use a switch. A sintaxe a seguir é específica do compilador.The following syntax is compiler specific. Se você usar compiladores diferentes de C# ou Visual Basic, consulte a documentação do seu compilador.If you use compilers other than C# or Visual Basic, refer to the documentation for your compiler.

  • Para habilitar a depuração C#no, adicione /d:DEBUG o sinalizador à linha de comando do compilador ao compilar o código ou você pode adicionar #define DEBUG à parte superior do arquivo.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. Em Visual Basic, adicione o /d:DEBUG=True sinalizador à linha de comando do compilador.In Visual Basic, add the /d:DEBUG=True flag to the compiler command line.

  • Para habilitar o rastreamento usando C#o no, /d:TRACE adicione o sinalizador à linha de comando do compilador ao compilar o código ou #define TRACE adicione-o à parte superior do arquivo.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. Em Visual Basic, adicione o /d:TRACE=True sinalizador à linha de comando do compilador.In Visual Basic, add the /d:TRACE=True flag to the compiler command line.

Para definir o nível do comutador, edite o arquivo de configuração que corresponde ao nome do seu aplicativo.To set the level of your switch, edit the configuration file that corresponds to the name of your application. Nesse arquivo, você pode adicionar uma opção e definir seu valor, remover uma opção ou limpar todas as opções definidas anteriormente pelo aplicativo.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. O arquivo de configuração deve ser formatado como o exemplo a seguir:The configuration file should be formatted like the following example:

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

Esta seção de configuração de exemplo BooleanSwitch define um DisplayName com a propriedade mySwitch definida como Enabled e o valor truedefinido como.This example configuration section defines a BooleanSwitch with the DisplayName property set to mySwitch and the Enabled value set to true. Em seu aplicativo, você pode usar o valor de opção configurado criando um BooleanSwitch com o mesmo nome, conforme mostrado no exemplo de código a seguir.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)
    {
        //...
    }
}

Notas aos Herdeiros

Se você precisar de níveis de rastreamento, ou mecanismos para configurar níveis de switch diferentes daqueles BooleanSwitchfornecidos SourceSwitch pelo TraceSwitche, você pode herdar de Switch.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. Ao herdar dessa classe, você deve implementar o SwitchSetting método.When inheriting from this class, you must implement the SwitchSetting method.

Construtores

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

Inicializa uma nova instância da 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)

Inicializa uma nova instância da classe Switch, especificando o nome de exibição, a descrição e o valor padrão para o comutador.Initializes a new instance of the Switch class, specifying the display name, description, and default value for the switch.

Propriedades

Attributes Attributes Attributes Attributes

Obtém os atributos de opção personalizados definidos no arquivo de configuração de aplicativo.Gets the custom switch attributes defined in the application configuration file.

Description Description Description Description

Obtém uma descrição do comutador.Gets a description of the switch.

DisplayName DisplayName DisplayName DisplayName

Obtém o nome usado para identificar o comutador.Gets a name used to identify the switch.

SwitchSetting SwitchSetting SwitchSetting SwitchSetting

Obtém ou define a configuração atual para essa opção.Gets or sets the current setting for this switch.

Value Value Value Value

Obtém ou define o valor da opção.Gets or sets the value of the switch.

Métodos

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

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

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

Serve como a função de hash padrão.Serves as the default hash function.

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

Obtém os atributos personalizados com suporte do comutador.Gets the custom attributes supported by the switch.

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

Obtém o Type da instância atual.Gets the Type of the current instance.

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

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

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

Invocado quando a propriedade SwitchSetting é alterada.Invoked when the SwitchSetting property is changed.

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

Invocado quando a propriedade Value é alterada.Invoked when the Value property is changed.

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

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Inherited from Object)

Aplica-se a

Veja também