File: System\Runtime\Serialization\SerializationTrace.cs
Project: ndp\cdf\src\WCF\Serialization\System.Runtime.Serialization.csproj (System.Runtime.Serialization)
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Runtime.Serialization
{
    using System.Diagnostics;
    using System.Security;
 
#if USE_REFEMIT
    public static class SerializationTrace
#else
    static class SerializationTrace
#endif
    {
        [Fx.Tag.SecurityNote(Critical = "Static fields are marked SecurityCritical or readonly to prevent"
            + " data from being modified or leaked to other components in appdomain.")]
        [SecurityCritical]
        static TraceSource codeGen;
 
        internal static SourceSwitch CodeGenerationSwitch
        {
            get
            {
                return CodeGenerationTraceSource.Switch;
            }
        }
 
        internal static void WriteInstruction(int lineNumber, string instruction)
        {
            CodeGenerationTraceSource.TraceInformation("{0:00000}: {1}", lineNumber, instruction);
        }
 
#if USE_REFEMIT
        public static void TraceInstruction(string instruction)
#else
        internal static void TraceInstruction(string instruction)
#endif
        {
            CodeGenerationTraceSource.TraceEvent(TraceEventType.Verbose, 0, instruction);
        }
 
        static TraceSource CodeGenerationTraceSource
        {
            [Fx.Tag.SecurityNote(Critical = "Fetches the critical codeGen field.",
                Safe = "Get-only properties only needs to be protected for write; initialized in getter if null.")]
            [SecuritySafeCritical]
            get
            {
                if (codeGen == null)
                    codeGen = new TraceSource("System.Runtime.Serialization.CodeGeneration");
                return codeGen;
            }
        }
    }
}