Csharp/CSharp Tutorial/Development/TraceSwitch

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

TraceWriteLineIf

<source lang="csharp">using System; using System.Collections.Generic; using System.Diagnostics; using System.Text;

public class MainClass {

   public static void Main()
   {
       TraceSwitch testTraceSwitch = new TraceSwitch("testTraceSwitch", "info");
       Trace.WriteLineIf(testTraceSwitch.TraceError, "Something bad happened");
       Trace.WriteLineIf(testTraceSwitch.TraceInfo, "Some informational trace");
   }

}</source>

User-Defined Switch

<source lang="csharp">// copyright 2000 Eric Gunnerson using System; using System.Diagnostics; enum SpecialSwitchLevel {

   Mute = 0,
   Terse = 1,
   Verbose = 2,
   Chatty = 3

} class SpecialSwitch: Switch {

   public SpecialSwitch(string displayName, string description) :
   base(displayName, description)
   {
   }
   
   public SpecialSwitchLevel Level
   {
       get
       {
           return((SpecialSwitchLevel) base.SwitchSetting);
       }
       set
       {
           base.SwitchSetting = (int) value;
       }    
   }
   public bool Mute
   {
       get
       {
           return(base.SwitchSetting == 0);
       }
   }
   
   public bool Terse
   {
       get
       {
           return(base.SwitchSetting >= (int) (SpecialSwitchLevel.Terse));
       }
   }
   public bool Verbose
   {
       get
       {
           return(base.SwitchSetting >= (int) SpecialSwitchLevel.Verbose);
       }
   }
   public bool Chatty
   {
       get
       {
           return(base.SwitchSetting >=(int) SpecialSwitchLevel.Chatty);
       }
   }
   
   protected new int SwitchSetting
   {
       get
       {
           return((int) base.SwitchSetting);
       }
       set
       {
           if (value < 0)
           value = 0;
           if (value > 4)
           value = 4;
           
           base.SwitchSetting = value;
       }
   }

} class MyClass {

   public MyClass(int i)
   {
       this.i = i;
   }
   
   [Conditional("DEBUG")]
   public void VerifyState()
   {
       Console.WriteLine("VerifyState");
       Debug.WriteLineIf(debugOutput.Terse, "VerifyState Start");
       
       Debug.WriteLineIf(debugOutput.Chatty, 
       "Starting field verification");
       
       if (debugOutput.Verbose)
       Debug.WriteLine("VerifyState End");
   }
   
   static SpecialSwitch    debugOutput = 
   new SpecialSwitch("MyClassDebugOutput", "application");
   int i = 0;

} class Test {

   public static void Main()
   {
       //TraceSwitch ts = new TraceSwitch("MyClassDebugOutput", "application");
       //Console.WriteLine("TraceSwitch: {0}", ts.Level);
       
       Debug.Listeners.Clear();
       Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
       MyClass c = new MyClass(1);
       
       c.VerifyState();
   }

}</source>