Switch Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje abstraktní základní třídu pro vytvoření nových přepínačů ladění a trasování.
public ref class Switch abstract
public abstract class Switch
type Switch = class
Public MustInherit Class Switch
- Dědičnost
-
Switch
- Odvozené
Příklady
Následující příklad ukazuje, jak definovat novou Switch třídu se čtyřmi úrovněmi trasování, které lze použít k trasování zásobníku volání. Přepínač můžete použít k instrumentaci aplikace k protokolování při každém zadání nebo ukončení metody.
První příklad vytvoří výčet použitý k nastavení úrovně přepínače.
// 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
Následující příklad vytvoří nový přepínač. Kód implementuje Level vlastnost pro nastavení hodnoty nového přepínače.
Level volá chráněnou vlastnost SwitchSetting , která přiřadí hodnotu novému přepínači. Tento příklad také implementuje dvě vlastnosti vyhodnocovače, aby získal přiřazenou hodnotu přepínače.
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
Následující příklad vytvoří nový přepínač v Main. Vytvoří nový přepínač a přiřadí ho jako hodnotu. V závislosti na nastavení přepínače pak výstupem zprávy ladění pro zadávání a opuštění metody.
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
Poznámky
Přepínač poskytuje efektivní mechanismus pro řízení trasování a ladění výstupu za běhu pomocí externích nastavení. Třída Switch implementuje výchozí chování přepínačů, což umožňuje změnit úroveň přepínače za běhu.
Tato třída je základní třídou pro BooleanSwitch, SourceSwitcha TraceSwitch třídy. Tyto přepínače splňují většinu potřeb ladění a trasování. Další informace o přepínačích trasování naleznete v tématu Přepínače trasování.
Pokud chcete použít přepínač, musíte povolit trasování nebo ladění. Následující syntaxe je specifická pro kompilátor. Pokud používáte jiné kompilátory než C# nebo Visual Basic, projděte si dokumentaci pro váš kompilátor.
Pokud chcete povolit ladění v jazyce C#, přidejte
/d:DEBUGpříznak do příkazového řádku kompilátoru při kompilaci kódu nebo můžete přidat#define DEBUGna začátek souboru. V jazyce Visual Basic přidejte/d:DEBUG=Truepříznak do příkazového řádku kompilátoru.Pokud chcete povolit trasování pomocí jazyka C#, přidejte
/d:TRACEpříznak do příkazového řádku kompilátoru při kompilaci kódu nebo přidejte#define TRACEna začátek souboru. V jazyce Visual Basic přidejte/d:TRACE=Truepříznak do příkazového řádku kompilátoru.
Pokud chcete nastavit úroveň přepínače v aplikaci .NET Framework, upravte konfigurační soubor, který odpovídá názvu vaší aplikace. V tomto souboru můžete přidat přepínač a nastavit jeho hodnotu, odebrat přepínač nebo vymazat všechny přepínače dříve nastavené aplikací. Konfigurační soubor by měl být formátovaný jako v následujícím příkladu:
<configuration>
<system.diagnostics>
<switches>
<add name="mySwitch" value="true" />
</switches>
</system.diagnostics>
</configuration>
Tento příklad konfigurační oddíl definuje BooleanSwitch s DisplayName vlastností nastavenou mySwitch na a hodnotu nastavenou Enabled na true. V rámci aplikace můžete použít nakonfigurovanou hodnotu přepínače vytvořením BooleanSwitch se stejným názvem, jak je znázorněno v následujícím příkladu kódu.
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)
{
//...
}
}
Poznámky pro implementátory
Pokud potřebujete úrovně trasování nebo mechanismy pro nastavení úrovní přepínače odlišných od těch, které BooleanSwitchSourceSwitch poskytuje , a TraceSwitch, můžete dědit z Switch. Při dědění z této třídy je nutné implementovat metodu SwitchSetting .
Konstruktory
| Name | Description |
|---|---|
| Switch(String, String, String) |
Inicializuje novou instanci Switch třídy, určuje zobrazovaný název, popis a výchozí hodnotu přepínače. |
| Switch(String, String) |
Inicializuje novou instanci Switch třídy. |
Vlastnosti
| Name | Description |
|---|---|
| Attributes |
Získá vlastní přepínače atributy definované v konfiguračním souboru aplikace. |
| DefaultValue |
Získá výchozí hodnotu přiřazenou v konstruktoru. |
| Description |
Získá popis přepínače. |
| DisplayName |
Získá název použitý k identifikaci přepínače. |
| SwitchSetting |
Získá nebo nastaví aktuální nastavení pro tento přepínač. |
| Value |
Získá nebo nastaví hodnotu přepínače. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetSupportedAttributes() |
Získá vlastní atributy podporované přepínačem. |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| OnSwitchSettingChanged() |
Vyvolána při SwitchSetting změně vlastnosti. |
| OnValueChanged() |
Vyvolána při Value změně vlastnosti. |
| Refresh() |
Aktualizuje konfigurační data trasování. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Událost
| Name | Description |
|---|---|
| Initializing |
Nastane, když Switch je potřeba inicializovat. |