Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase Switch

 

Publicado: octubre de 2016

Proporciona una clase base abstracta para crear nuevos de depuración y conmutadores de seguimiento.

Espacio de nombres:   System.Diagnostics
Ensamblado:  System (en System.dll)


public ref class Switch abstract 

NombreDescripción
System_CAPS_protmethodSwitch(String^, String^)

Inicializa una nueva instancia de la clase Switch.

System_CAPS_protmethodSwitch(String^, String^, String^)

Inicializa una nueva instancia de la Switch clase, especificando el nombre para mostrar, la descripción y el valor predeterminado para el conmutador.

NombreDescripción
System_CAPS_pubpropertyAttributes

Obtiene los atributos de modificador personalizados definidos en el archivo de configuración de la aplicación.

System_CAPS_pubpropertyDescription

Obtiene una descripción del modificador.

System_CAPS_pubpropertyDisplayName

Obtiene el nombre utilizado para identificar el modificador.

System_CAPS_protpropertySwitchSetting

Obtiene o establece el valor actual de este modificador.

System_CAPS_protpropertyValue

Obtiene o establece el valor del modificador.

NombreDescripción
System_CAPS_pubmethodEquals(Object^)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_protmethodGetSupportedAttributes()

Obtiene los atributos personalizados admitidos por el modificador.

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodOnSwitchSettingChanged()

Cuando invoca el SwitchSetting se cambia la propiedad.

System_CAPS_protmethodOnValueChanged()

Cuando invoca el Value se cambia la propiedad.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

Un conmutador proporciona un mecanismo eficaz para controlar los resultados de seguimiento y de depuración en tiempo de ejecución mediante una configuración externa. La Switch clase implementa el comportamiento predeterminado de los modificadores, lo que le permite cambiar el nivel del modificador en tiempo de ejecución.

Esta clase es la clase base para el BooleanSwitch, SourceSwitch y TraceSwitch clases. Estos modificadores satisfacen la mayoría de depuración y traza necesidades. Para obtener más información acerca de los modificadores de seguimiento, consulte Trace Switches.

Debe habilitar el seguimiento o la depuración para utilizar un modificador. La sintaxis siguiente es específica del compilador. Si utiliza compiladores distintos de C# o Visual Basic, consulte la documentación del compilador.

  • Para habilitar la depuración en C#, agregue el /d:DEBUG marca a la línea de comandos del compilador al compilar el código o puede agregar #define DEBUG a la parte superior del archivo. En Visual Basic, agregue el /d:DEBUG=True marca a la línea de comandos del compilador.

  • Para habilitar el seguimiento en C#, agregue el /d:TRACE marca a la línea de comandos del compilador al compilar el código, o agregue #define TRACE a la parte superior del archivo. En Visual Basic, agregue el /d:TRACE=True marca a la línea de comandos del compilador.

Para establecer el nivel de conmutador, edite el archivo de configuración que corresponde al nombre de la aplicación. En este archivo, puede agregar un conmutador y establezca su valor, quitar un modificador o borrar todos los modificadores establecidos previamente por la aplicación. El archivo de configuración debería tener el formato similar al ejemplo siguiente:

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

Esta sección de configuración de ejemplo se define un BooleanSwitch con el DisplayName propiedad establecida en mySwitch y Enabled el valor true. Dentro de la aplicación, puede utilizar el valor del modificador configurado creando un BooleanSwitch con el mismo nombre, como se muestra en el ejemplo de código siguiente.

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

Notas para desarrolladores de herederos:

Si se necesitan niveles de seguimiento o mecanismos de configuración cambiar niveles diferentes de los proporcionados por BooleanSwitch, SourceSwitch y TraceSwitch, se puede heredar de Switch. Al heredar de esta clase, debe implementar la SwitchSetting método.

En el ejemplo siguiente se muestra cómo definir un nuevo Switch clase con cuatro niveles de seguimiento que se puede utilizar para realizar el seguimiento de una pila de llamadas. Puede utilizar el modificador para instrumentar su aplicación para iniciar sesión cada vez que el método se ha entrado o salida.

El primer ejemplo crea la enumeración se utiliza para establecer el nivel del modificador.

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


En el ejemplo siguiente se crea el nuevo modificador. El código implementa un Level propiedad para establecer el valor del nuevo modificador. Level llama a la propiedad protegida SwitchSetting que asigna el valor al nuevo modificador. Este ejemplo implementa también dos propiedades de evaluación para obtener el valor asignado del modificador.

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;
        }
    }
};


En el ejemplo siguiente se crea un nuevo modificador en Main. Crea un nuevo modificador y le asigna un valor. A continuación, dependiendo de la configuración del conmutador, genera mensajes de depuración para entrar y salir del método.

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");
    }
};

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: