SerializationTrace.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //-----------------------------------------------------------------------------
  4. namespace System.Runtime.Serialization
  5. {
  6. using System.Diagnostics;
  7. using System.Security;
  8. #if USE_REFEMIT
  9. public static class SerializationTrace
  10. #else
  11. static class SerializationTrace
  12. #endif
  13. {
  14. [Fx.Tag.SecurityNote(Critical = "Static fields are marked SecurityCritical or readonly to prevent"
  15. + " data from being modified or leaked to other components in appdomain.")]
  16. [SecurityCritical]
  17. static TraceSource codeGen;
  18. internal static SourceSwitch CodeGenerationSwitch
  19. {
  20. get
  21. {
  22. return CodeGenerationTraceSource.Switch;
  23. }
  24. }
  25. internal static void WriteInstruction(int lineNumber, string instruction)
  26. {
  27. CodeGenerationTraceSource.TraceInformation("{0:00000}: {1}", lineNumber, instruction);
  28. }
  29. #if USE_REFEMIT
  30. public static void TraceInstruction(string instruction)
  31. #else
  32. internal static void TraceInstruction(string instruction)
  33. #endif
  34. {
  35. CodeGenerationTraceSource.TraceEvent(TraceEventType.Verbose, 0, instruction);
  36. }
  37. static TraceSource CodeGenerationTraceSource
  38. {
  39. [Fx.Tag.SecurityNote(Critical = "Fetches the critical codeGen field.",
  40. Safe = "Get-only properties only needs to be protected for write; initialized in getter if null.")]
  41. [SecuritySafeCritical]
  42. get
  43. {
  44. if (codeGen == null)
  45. codeGen = new TraceSource("System.Runtime.Serialization.CodeGeneration");
  46. return codeGen;
  47. }
  48. }
  49. }
  50. }