Switch Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan kelas dasar abstrak untuk membuat sakelar penelusuran kesalahan dan pelacakan baru.
public ref class Switch abstract
public abstract class Switch
type Switch = class
Public MustInherit Class Switch
- Warisan
-
Switch
- Turunan
Contoh
Contoh berikut menunjukkan cara menentukan kelas baru Switch dengan empat tingkat pelacakan yang dapat digunakan untuk melacak tumpukan panggilan. Anda dapat menggunakan sakelar untuk melengkapi aplikasi Anda untuk mencatat setiap kali metode dimasukkan atau keluar.
Contoh pertama membuat enumerasi yang digunakan untuk mengatur tingkat sakelar.
// 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
Contoh berikut membuat sakelar baru. Kode mengimplementasikan Level properti untuk mengatur nilai sakelar baru.
Level memanggil properti SwitchSetting terproteksi yang menetapkan nilai ke sakelar baru. Contoh ini juga mengimplementasikan dua properti penilai untuk mendapatkan nilai sakelar yang ditetapkan.
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
Contoh berikut membuat sakelar baru di Main. Ini membuat sakelar baru dan menetapkannya nilai. Kemudian, tergantung pada pengaturan pengalihan, itu menghasilkan pesan debugging untuk memasukkan dan meninggalkan metode .
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
Keterangan
Sakelar menyediakan mekanisme yang efisien untuk mengontrol output pelacakan dan penelusuran kesalahan pada waktu proses menggunakan pengaturan eksternal. Kelas Switch menerapkan perilaku default untuk sakelar, memungkinkan Anda mengubah tingkat sakelar pada waktu proses.
Kelas ini adalah kelas dasar untuk BooleanSwitchkelas , , SourceSwitchdan TraceSwitch . Sakelar ini memenuhi sebagian besar kebutuhan penelusuran kesalahan dan pelacakan. Untuk informasi selengkapnya tentang sakelar pelacakan, lihat Sakelar Pelacakan.
Anda harus mengaktifkan pelacakan atau penelusuran kesalahan untuk menggunakan sakelar. Sintaks berikut adalah kompilator spesifik. Jika Anda menggunakan pengkompilasi selain C# atau Visual Basic, lihat dokumentasi untuk pengkompilasi Anda.
Untuk mengaktifkan penelusuran kesalahan di C#, tambahkan
/d:DEBUGbendera ke baris perintah pengkompilasi saat Mengkompilasi kode, atau Anda dapat menambahkan#define DEBUGke bagian atas file Anda. Di Visual Basic, tambahkan/d:DEBUG=Truebendera ke baris perintah pengkompilasi.Untuk mengaktifkan pelacakan menggunakan di C#, tambahkan
/d:TRACEbendera ke baris perintah pengkompilasi saat Anda mengkompilasi kode Anda, atau tambahkan#define TRACEke bagian atas file Anda. Di Visual Basic, tambahkan/d:TRACE=Truebendera ke baris perintah pengkompilasi.
Untuk mengatur tingkat sakelar Anda di aplikasi .NET Framework, edit file konfigurasi yang sesuai dengan nama aplikasi Anda. Dalam file ini, Anda dapat menambahkan sakelar dan mengatur nilainya, menghapus sakelar, atau menghapus semua sakelar yang sebelumnya diatur oleh aplikasi. File konfigurasi harus diformat seperti contoh berikut:
<configuration>
<system.diagnostics>
<switches>
<add name="mySwitch" value="true" />
</switches>
</system.diagnostics>
</configuration>
Bagian konfigurasi contoh ini mendefinisikan BooleanSwitch dengan properti yang DisplayName diatur ke mySwitch dan nilai diatur Enabled ke true. Dalam aplikasi, Anda dapat menggunakan nilai sakelar yang dikonfigurasi dengan membuat BooleanSwitch dengan nama yang sama, seperti yang ditunjukkan dalam contoh kode berikut.
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)
{
//...
}
}
Catatan Bagi Implementer
Jika Anda memerlukan tingkat pelacakan, atau mekanisme untuk mengatur tingkat pengalihan yang berbeda dari yang disediakan oleh BooleanSwitch, SourceSwitch dan TraceSwitch, Anda dapat mewarisi dari Switch. Saat mewarisi dari kelas ini, Anda harus menerapkan metode .SwitchSetting
Konstruktor
| Nama | Deskripsi |
|---|---|
| Switch(String, String, String) |
Menginisialisasi instans Switch baru kelas, menentukan nama tampilan, deskripsi, dan nilai default untuk sakelar. |
| Switch(String, String) |
Menginisialisasi instans baru dari kelas Switch. |
Properti
| Nama | Deskripsi |
|---|---|
| Attributes |
Mendapatkan atribut sakelar kustom yang ditentukan dalam file konfigurasi aplikasi. |
| DefaultValue |
Mendapatkan nilai default yang ditetapkan dalam konstruktor. |
| Description |
Mendapatkan deskripsi sakelar. |
| DisplayName |
Mendapatkan nama yang digunakan untuk mengidentifikasi sakelar. |
| SwitchSetting |
Mendapatkan atau mengatur pengaturan saat ini untuk sakelar ini. |
| Value |
Mendapatkan atau mengatur nilai sakelar. |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetSupportedAttributes() |
Mendapatkan atribut kustom yang didukung oleh sakelar. |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| OnSwitchSettingChanged() |
Dipanggil ketika SwitchSetting properti diubah. |
| OnValueChanged() |
Dipanggil ketika Value properti diubah. |
| Refresh() |
Menyegarkan data konfigurasi pelacakan. |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Acara
| Nama | Deskripsi |
|---|---|
| Initializing |
Terjadi ketika Switch perlu diinisialisasi. |