Switch Klasa

Definicja

Udostępnia abstrakcyjną klasę bazową do tworzenia nowych przełączników debugowania i śledzenia.

C#
public abstract class Switch
Dziedziczenie
Switch
Pochodne

Przykłady

W poniższym przykładzie pokazano, jak zdefiniować nową Switch klasę z czterema poziomami śledzenia, których można użyć do śledzenia stosu wywołań. Możesz użyć przełącznika , aby instrumentować aplikację w celu rejestrowania za każdym razem, gdy metoda zostanie wprowadzona lub zakończona.

Pierwszy przykład tworzy wyliczenie używane do ustawiania poziomu przełącznika.

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

Poniższy przykład tworzy nowy przełącznik. Kod implementuje Level właściwość , aby ustawić wartość nowego przełącznika. Level wywołuje właściwość SwitchSetting chronioną, która przypisuje wartość do nowego przełącznika. W tym przykładzie zaimplementowane są również dwie właściwości oceniania w celu uzyskania przypisanej wartości przełącznika.

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

Poniższy przykład tworzy nowy przełącznik w programie Main. Tworzy nowy przełącznik i przypisuje mu wartość. Następnie, w zależności od ustawień przełącznika, generuje komunikaty debugowania do wprowadzania i opuszczania metody.

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

Uwagi

Przełącznik zapewnia wydajny mechanizm kontrolowania danych wyjściowych śledzenia i debugowania w czasie wykonywania przy użyciu ustawień zewnętrznych. Klasa Switch implementuje domyślne zachowanie przełączników, umożliwiając zmianę poziomu przełącznika w czasie wykonywania.

Ta klasa jest klasą bazową dla BooleanSwitchklas , SourceSwitchi TraceSwitch . Te przełączniki spełniają większość potrzeb debugowania i śledzenia. Aby uzyskać więcej informacji na temat przełączników śledzenia, zobacz Trace Switches (Przełączniki śledzenia).

Aby użyć przełącznika, należy włączyć śledzenie lub debugowanie. Następująca składnia jest specyficzna dla kompilatora. Jeśli używasz kompilatorów innych niż C# lub Visual Basic, zapoznaj się z dokumentacją kompilatora.

  • Aby włączyć debugowanie w języku C#, dodaj flagę /d:DEBUG do wiersza polecenia kompilatora podczas kompilowania kodu lub możesz dodać #define DEBUG ją na początku pliku. W języku Visual Basic dodaj flagę /d:DEBUG=True do wiersza polecenia kompilatora.

  • Aby włączyć śledzenie przy użyciu języka C#, dodaj flagę /d:TRACE do wiersza polecenia kompilatora podczas kompilowania kodu lub dodaj #define TRACE ją na początku pliku. W języku Visual Basic dodaj flagę /d:TRACE=True do wiersza polecenia kompilatora.

Aby ustawić poziom przełącznika w aplikacji .NET Framework, zmodyfikuj plik konfiguracji odpowiadający nazwie aplikacji. W tym pliku można dodać przełącznik i ustawić jego wartość, usunąć przełącznik lub wyczyścić wszystkie przełączniki ustawione wcześniej przez aplikację. Plik konfiguracji powinien być sformatowany tak, jak w poniższym przykładzie:

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

W tej przykładowej sekcji konfiguracji zdefiniowano BooleanSwitch element z właściwością ustawioną DisplayName na mySwitch , a wartość ustawioną Enabled na true. W aplikacji można użyć skonfigurowanej wartości przełącznika, tworząc element BooleanSwitch o tej samej nazwie, jak pokazano w poniższym przykładzie kodu.

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

Uwagi dotyczące implementowania

Jeśli potrzebujesz poziomów śledzenia lub mechanizmów ustawiania poziomów przełączników innych niż te udostępniane przez BooleanSwitch, SourceSwitch i TraceSwitch, możesz dziedziczyć z Switchklasy . Podczas dziedziczenia z tej klasy należy zaimplementować metodę SwitchSetting .

Konstruktory

Switch(String, String)

Inicjuje nowe wystąpienie klasy Switch.

Switch(String, String, String)

Inicjuje Switch nowe wystąpienie klasy, określając nazwę wyświetlaną, opis i wartość domyślną przełącznika.

Właściwości

Attributes

Pobiera atrybuty przełącznika niestandardowego zdefiniowane w pliku konfiguracji aplikacji.

DefaultValue

Pobiera wartość domyślną przypisaną w konstruktorze.

Description

Pobiera opis przełącznika.

DisplayName

Pobiera nazwę używaną do identyfikowania przełącznika.

SwitchSetting

Pobiera lub ustawia bieżące ustawienie dla tego przełącznika.

Value

Pobiera lub ustawia wartość przełącznika.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetSupportedAttributes()

Pobiera atrybuty niestandardowe obsługiwane przez przełącznik.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnSwitchSettingChanged()

Wywoływane SwitchSetting po zmianie właściwości.

OnValueChanged()

Wywoływane Value po zmianie właściwości.

Refresh()

Odświeża dane konfiguracji śledzenia.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Zdarzenia

Initializing

Występuje, gdy należy zainicjować element Switch .

Dotyczy

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Zobacz też