Implement MachineKey.Protect and MachineKey.Unprotect
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / UnitTestFramework / System / ComponentModel / Composition / Diagnostics / TraceContext.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 #if !SILVERLIGHT\r
5 \r
6 using System;\r
7 using System.Linq;\r
8 using System.Diagnostics;\r
9 using System.Collections.Generic;\r
10 \r
11 namespace System.ComponentModel.Composition.Diagnostics\r
12 {\r
13     public partial class TraceContext : IDisposable\r
14     {\r
15         private readonly SourceLevels _previousLevel = TraceSourceTraceWriter.Source.Switch.Level;\r
16         private readonly TraceContextTraceListener _listener = new TraceContextTraceListener();\r
17 \r
18         public TraceContext(SourceLevels level)\r
19         {\r
20             TraceSourceTraceWriter.Source.Switch.Level = level;\r
21             TraceSourceTraceWriter.Source.Listeners.Add(_listener);\r
22         }\r
23 \r
24         [CLSCompliant(false)]\r
25         public TraceEventDetails LastTraceEvent\r
26         {\r
27             get { return _listener.TraceEvents.LastOrDefault(); }\r
28         }\r
29 \r
30         [CLSCompliant(false)]\r
31         public IList<TraceEventDetails> TraceEvents\r
32         {\r
33             get { return _listener.TraceEvents; }\r
34         }\r
35 \r
36         public void Dispose()\r
37         {\r
38             TraceSourceTraceWriter.Source.Listeners.Remove(_listener);\r
39             TraceSourceTraceWriter.Source.Switch.Level = _previousLevel;            \r
40         }\r
41     }\r
42 }\r
43 \r
44 #endif