File: System\ServiceModel\Diagnostics\OperationInvokerTrace.cs
Project: ndp\cdf\src\WCF\ServiceModel\System.ServiceModel.csproj (System.ServiceModel)
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
 
namespace System.ServiceModel.Diagnostics
{
    using System;
    using System.ServiceModel.Channels;
    using System.Diagnostics;
    using System.Reflection;
 
#if USE_REFEMIT
    public static class OperationInvokerTrace
#else
    static class OperationInvokerTrace
#endif
    {
        static TraceSource codeGenSource;
        static MethodInfo traceInstructionMethod;
 
        internal static SourceSwitch CodeGenerationSwitch
        {
            get { return CodeGenerationTraceSource.Switch; }
        }
 
        internal static void WriteInstruction(int lineNumber, string instruction)
        {
            CodeGenerationTraceSource.TraceInformation("{0:00000}: {1}", lineNumber, instruction);
        }
 
        internal static MethodInfo TraceInstructionMethod
        {
            get
            {
                if (traceInstructionMethod == null)
                    traceInstructionMethod = typeof(OperationInvokerTrace).GetMethod("TraceInstruction", BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
                return traceInstructionMethod;
            }
        }
            
#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
        {
            get
            {
                if (codeGenSource == null)
                    codeGenSource = new TraceSource("System.ServiceModel.OperationInvoker.CodeGeneration");
                return codeGenSource;
            }
        }
    }
}