Switch Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt een abstracte basisklasse voor het maken van nieuwe schakelaars voor foutopsporing en tracering.
public ref class Switch abstract
public abstract class Switch
type Switch = class
Public MustInherit Class Switch
- Overname
-
Switch
- Afgeleid
Voorbeelden
In het volgende voorbeeld ziet u hoe u een nieuwe Switch klasse definieert met vier traceringsniveaus die kunnen worden gebruikt om een aanroepstack te traceren. U kunt de switch gebruiken om uw toepassing te instrumenteren om elke keer dat de methode wordt ingevoerd of afgesloten te registreren.
In het eerste voorbeeld wordt de opsomming gemaakt die wordt gebruikt om het niveau van de switch in te stellen.
// 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
In het volgende voorbeeld wordt de nieuwe switch gemaakt. Met de code wordt een Level eigenschap geïmplementeerd om de waarde van de nieuwe switch in te stellen.
Level roept de beveiligde eigenschap SwitchSetting aan waarmee de waarde wordt toegewezen aan de nieuwe switch. In dit voorbeeld worden ook twee beoordelingseigenschappen geïmplementeerd om de toegewezen waarde van de switch op te halen.
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
In het volgende voorbeeld wordt een nieuwe switch gemaakt in Main. Er wordt een nieuwe switch gemaakt en deze wordt een waarde toegewezen. Afhankelijk van de switchinstellingen worden er vervolgens foutopsporingsberichten uitgevoerd voor het invoeren en verlaten van de methode.
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
Opmerkingen
Een switch biedt een efficiënt mechanisme voor het beheren van tracerings- en foutopsporingsuitvoer tijdens runtime met behulp van externe instellingen. De Switch klasse implementeert standaardgedrag voor switches, zodat u het switchniveau tijdens runtime kunt wijzigen.
Deze klasse is de basisklasse voor de BooleanSwitch, SourceSwitchen TraceSwitch klassen. Deze switches voldoen aan de meeste foutopsporings- en traceringsbehoeften. Zie Trace switches voor meer informatie over traceringsswitches.
U moet tracering of foutopsporing inschakelen om een switch te kunnen gebruiken. De volgende syntaxis is specifiek voor compileren. Als u andere compilers dan C# of Visual Basic gebruikt, raadpleegt u de documentatie voor uw compiler.
Als u foutopsporing in C# wilt inschakelen, voegt u de
/d:DEBUGvlag toe aan de opdrachtregel van de compiler wanneer u uw code compileert of kunt u toevoegen#define DEBUGaan het begin van het bestand. Voeg in Visual Basic de vlag/d:DEBUG=Truetoe aan de opdrachtregel van de compiler.Als u tracering wilt inschakelen met behulp van C#, voegt u de
/d:TRACEvlag toe aan de opdrachtregel van de compiler wanneer u uw code compileert of voegt u deze toe#define TRACEaan het begin van het bestand. Voeg in Visual Basic de vlag/d:TRACE=Truetoe aan de opdrachtregel van de compiler.
Als u het niveau van uw switch in een .NET Framework-app wilt instellen, bewerkt u het configuratiebestand dat overeenkomt met de naam van uw toepassing. In dit bestand kunt u een switch toevoegen en de bijbehorende waarde instellen, een schakeloptie verwijderen of alle schakelopties wissen die eerder door de toepassing zijn ingesteld. Het configuratiebestand moet worden opgemaakt zoals in het volgende voorbeeld:
<configuration>
<system.diagnostics>
<switches>
<add name="mySwitch" value="true" />
</switches>
</system.diagnostics>
</configuration>
In dit voorbeeld van de configuratiesectie wordt een BooleanSwitch met de DisplayName eigenschap gedefinieerd waarop mySwitch en de Enabled waarde is ingesteld op true. In uw toepassing kunt u de geconfigureerde switchwaarde gebruiken door een BooleanSwitch met dezelfde naam te maken, zoals wordt weergegeven in het volgende codevoorbeeld.
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)
{
//...
}
}
Notities voor uitvoerders
Als u traceringsniveaus of mechanismen nodig hebt voor het instellen van schakelniveaus die afwijken van die van BooleanSwitch, SourceSwitch en TraceSwitchkunt u overnemen van Switch. Bij het overnemen van deze klasse moet u de SwitchSetting methode implementeren.
Constructors
| Name | Description |
|---|---|
| Switch(String, String, String) |
Initialiseert een nieuw exemplaar van de Switch klasse, waarbij de weergavenaam, beschrijving en standaardwaarde voor de schakeloptie worden opgegeven. |
| Switch(String, String) |
Initialiseert een nieuw exemplaar van de Switch klasse. |
Eigenschappen
| Name | Description |
|---|---|
| Attributes |
Hiermee haalt u de aangepaste switchkenmerken op die zijn gedefinieerd in het configuratiebestand van de toepassing. |
| Description |
Hiermee wordt een beschrijving van de schakelaar opgegeven. |
| DisplayName |
Hiermee haalt u een naam op die wordt gebruikt om de switch te identificeren. |
| SwitchSetting |
Hiermee haalt u de huidige instelling voor deze switch op of stelt u deze in. |
| Value |
Hiermee haalt u de waarde van de switch op of stelt u deze in. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetSupportedAttributes() |
Hiermee haalt u de aangepaste kenmerken op die door de switch worden ondersteund. |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| OnSwitchSettingChanged() |
Aangeroepen wanneer de SwitchSetting eigenschap wordt gewijzigd. |
| OnValueChanged() |
Aangeroepen wanneer de Value eigenschap wordt gewijzigd. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |