Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe Switch

 

Data di pubblicazione: ottobre 2016

Fornisce una classe base astratta per creare nuove debug e tracciatura commutatori.

Spazio dei nomi:   System.Diagnostics
Assembly:  System (in System.dll)


public abstract class Switch

NomeDescrizione
System_CAPS_protmethodSwitch(String, String)

Inizializza una nuova istanza della classe Switch.

System_CAPS_protmethodSwitch(String, String, String)

Inizializza una nuova istanza di Switch classe, specificando il nome visualizzato, descrizione e il valore predefinito per il commutatore.

NomeDescrizione
System_CAPS_pubpropertyAttributes

Ottiene gli attributi di opzione personalizzati definiti nel file di configurazione dell'applicazione.

System_CAPS_pubpropertyDescription

Ottiene una descrizione dell'opzione.

System_CAPS_pubpropertyDisplayName

Ottiene un nome utilizzato per identificare l'opzione.

System_CAPS_protpropertySwitchSetting

Ottiene o imposta l'impostazione corrente per questa opzione.

System_CAPS_protpropertyValue

Ottiene o imposta il valore dell'opzione.

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_protmethodFinalize()

Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_protmethodGetSupportedAttributes()

Ottiene gli attributi personalizzati supportati dall'opzione.

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_protmethodOnSwitchSettingChanged()

Richiamato quando il SwitchSetting proprietà viene modificata.

System_CAPS_protmethodOnValueChanged()

Richiamato quando il Value proprietà viene modificata.

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

Un commutatore fornisce un meccanismo efficiente per determinare l'output di traccia e debug in fase di esecuzione tramite impostazioni esterne. La Switch classe implementa il comportamento predefinito per le opzioni, consentendo di modificare il livello del commutatore in fase di esecuzione.

Questa classe è la classe base per il BooleanSwitch, SourceSwitch e TraceSwitch classi. Le opzioni soddisfano la maggior parte di debug e di tracciatura esigenze. Per ulteriori informazioni sulle opzioni di traccia, vedere Trace Switches.

È necessario abilitare l'analisi o di debug per l'utilizzo di un commutatore. La sintassi seguente è specifica del compilatore. Se si utilizza un compilatore diverso da c# o Visual Basic, vedere la documentazione del compilatore.

  • Per abilitare il debug in c#, aggiungere il /d:DEBUG flag alla riga di comando del compilatore quando si compila il codice oppure è possibile aggiungere #define DEBUG all'inizio del file. In Visual Basic, aggiungere il /d:DEBUG=True flag alla riga di comando del compilatore.

  • Per abilitare la tracciatura in c#, aggiungere il /d:TRACE flag alla riga di comando del compilatore quando si compila il codice o aggiungere #define TRACE all'inizio del file. In Visual Basic, aggiungere il /d:TRACE=True flag alla riga di comando del compilatore.

Per impostare il livello del commutatore, modificare il file di configurazione che corrisponde al nome dell'applicazione. All'interno di questo file, è possibile aggiungere un commutatore e impostarne il valore, rimuovere un'opzione o deselezionare tutte le opzioni impostate in precedenza dall'applicazione. Il file di configurazione deve essere formattato come nell'esempio seguente:

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

Questa sezione di configurazione di esempio definisce un BooleanSwitch con il DisplayName impostata su mySwitch e Enabled valore impostato su true. All'interno dell'applicazione, è possibile utilizzare il valore dell'opzione configurato creando un BooleanSwitch con lo stesso nome, come illustrato nell'esempio di codice seguente.

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 è necessario tracciare livelli o meccanismi per l'impostazione di uno switch livelli diversi da quelli forniti da BooleanSwitch, SourceSwitch e TraceSwitch, è possibile ereditare da Switch. Quando si eredita da questa classe, è necessario implementare il SwitchSetting metodo.

Nell'esempio seguente viene illustrato come definire un nuovo Switch classe con quattro livelli di traccia che può essere utilizzato per tracciare un stack di chiamate. È possibile utilizzare l'opzione per instrumentare l'applicazione per l'accesso ogni volta che il metodo è attivato o disattivato.

Nel primo esempio viene creata l'enumerazione utilizzata per impostare il livello del commutatore.

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

Nell'esempio seguente viene creata la nuova opzione. Il codice implementa un Level proprietà per impostare il valore della nuova opzione. Level chiama la proprietà protetta SwitchSetting che assegna il valore per il nuovo parametro. In questo esempio implementa inoltre due proprietà di consulente per ottenere il valore assegnato dell'opzione.

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

Nell'esempio seguente viene creata una nuova opzione in Main. Viene creata una nuova opzione e viene assegnato un valore. Quindi, in base alle impostazioni dell'opzione di output messaggi di debug per l'immissione e uscire dal metodo.

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
Disponibile da 1.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: