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 class 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,
}
' 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 ref class MyMethodTracingSwitch: public Switch
{
protected:
bool outExit;
bool outEnter;
MethodTracingSwitchLevel level;
public:
MyMethodTracingSwitch( String^ displayName, String^ description )
: Switch( displayName, description )
{}
property MethodTracingSwitchLevel Level
{
MethodTracingSwitchLevel get()
{
return level;
}
void set( MethodTracingSwitchLevel value )
{
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:
property bool OutputExit
{
bool get()
{
return outExit;
}
}
property bool OutputEnter
{
bool get()
{
return outEnter;
}
}
};
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 menetapkan nilai. Kemudian, tergantung pada pengaturan pengalihan, ini menghasilkan pesan debugging untuk memasukkan dan meninggalkan metode .
public ref class Class1
{
private:
/* Create an instance of MyMethodTracingSwitch.*/
static MyMethodTracingSwitch^ mySwitch =
gcnew 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(gcnew 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.*/
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 durasi menggunakan pengaturan eksternal. Kelas Switch menerapkan perilaku default untuk sakelar, memungkinkan Anda mengubah tingkat sakelar pada durasi.
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:DEBUG
bendera ke baris perintah pengkompilasi saat Mengkompilasi kode, atau Anda dapat menambahkan#define DEBUG
ke bagian atas file Anda. Di Visual Basic, tambahkan/d:DEBUG=True
bendera ke baris perintah pengkompilasi.Untuk mengaktifkan pelacakan menggunakan di C#, tambahkan
/d:TRACE
bendera ke baris perintah pengkompilasi saat Anda mengkompilasi kode, atau menambahkan#define TRACE
ke bagian atas file Anda. Di Visual Basic, tambahkan/d:TRACE=True
bendera ke baris perintah pengkompilasi.
Untuk mengatur tingkat pengalihan 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 menentukan 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 = gcnew BooleanSwitch("mySwitch",
"Switch in config file");
public:
static void Main( )
{
//...
Console::WriteLine("Boolean switch {0} configured as {1}",
boolSwitch->DisplayName, ((Boolean^)boolSwitch->Enabled)->ToString());
if (boolSwitch->Enabled)
{
//...
}
}
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
Switch(String, String) |
Menginisialisasi instans baru kelas Switch. |
Switch(String, String, String) |
Menginisialisasi instans Switch baru kelas, menentukan nama tampilan, deskripsi, dan nilai default untuk sakelar. |
Properti
Attributes |
Mendapatkan atribut sakelar kustom yang ditentukan dalam file konfigurasi aplikasi. |
DefaultValue |
Mendapatkan nilai default yang ditetapkan di konstruktor. |
Description |
Mendapatkan deskripsi sakelar. |
DisplayName |
Mendapatkan nama yang digunakan untuk mengidentifikasi sakelar. |
SwitchSetting |
Mendapatkan atau menyetel pengaturan saat ini untuk sakelar ini. |
Value |
Mendapatkan atau mengatur nilai sakelar. |
Metode
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 instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
OnSwitchSettingChanged() |
Dipanggil saat SwitchSetting properti diubah. |
OnValueChanged() |
Dipanggil saat Value properti diubah. |
Refresh() |
Merefresh data konfigurasi pelacakan. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Acara
Initializing |
Terjadi ketika Switch perlu diinisialisasi. |