Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Switch (Clase)

Proporciona una clase base abstracta para crear nuevos modificadores de depuración y traza.

Espacio de nombres:  System.Diagnostics
Ensamblado:  System (en System.dll)
public abstract class Switch

El tipo Switch expone los siguientes miembros.

  NombreDescripción
Método protegidoSwitch(String, String)Inicializa una nueva instancia de la clase Switch.
Método protegidoSwitch(String, String, String)Inicializa una nueva instancia de la clase Switch especificando el nombre para mostrar, la descripción y el valor predeterminado del modificador.
Arriba
  NombreDescripción
Propiedad públicaAttributesObtiene los atributos de modificador personalizados definidos en el archivo de configuración de la aplicación.
Propiedad públicaDescriptionObtiene una descripción del modificador.
Propiedad públicaDisplayNameObtiene el nombre utilizado para identificar el modificador.
Propiedad protegidaSwitchSettingObtiene o establece la configuración actual de este modificador.
Propiedad protegidaValueObtiene o establece el valor del modificador.
Arriba
  NombreDescripción
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método protegidoGetSupportedAttributesObtiene los atributos personalizados que admite el modificador.
Método públicoGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoOnSwitchSettingChangedSe invoca cuando cambia la propiedad SwitchSetting.
Método protegidoOnValueChangedSe invoca cuando cambia la propiedad Value.
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

Los modificadores proporcionan un mecanismo eficaz para controlar los resultados de la traza y la depuración en tiempo de ejecución mediante una configuración externa. La clase Switch implementa el comportamiento predeterminado de los modificadores, permitiendo cambiar el nivel del modificador en tiempo de ejecución.

Ésta es la clase base de las clases BooleanSwitch, SourceSwitch y TraceSwitch. Estos modificadores satisfacen la mayoría de las necesidades de depuración y traza. Para obtener más información sobre los modificadores de seguimiento, vea Modificadores de seguimiento.

Para utilizar modificadores, se debe habilitar la traza o la depuración. La sintaxis siguiente es específica del compilador. Si se utilizan compiladores que no sean C# o Visual Basic, consulte la documentación del compilador.

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

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

Para establecer el nivel del modificador, modifique el archivo de configuración correspondiente al nombre de la aplicación. En el archivo, se puede agregar un modificador y se puede establecer su valor, quitar un modificador o borrar todos los modificadores previamente establecidos por la aplicación. El archivo de configuración debe tener el mismo formato que en el siguiente ejemplo:

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

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


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 para los herederos

Si se necesitan niveles de seguimiento o algún mecanismo para configurar niveles de modificador diferentes de los proporcionados por BooleanSwitch, SourceSwitch y TraceSwitch, es posible heredarlos de Switch. Al heredar de esta clase, es necesario implementar el método SwitchSetting.

En el ejemplo siguiente se muestra cómo definir una nueva clase Switch con cuatro niveles de traza, que se pueden utilizar para hacer un seguimiento de una pila de llamadas. Es posible utilizar el modificador para instrumentar la aplicación en el registro cada vez que se entra o se sale del método.

En el primer ejemplo se crea la enumeración utilizada para establecer el nivel del modificador.


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


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


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


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


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


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.