public static void TraceInMemory <T0, T1, T2>(int lid, TraceType traceType, Guid componentGuid, int traceTag, long id, string format, T0 argument0, T1 argument1, T2 argument2) { MemoryTraceBuilder memoryTraceBuilder = ExTraceInternal.GetMemoryTraceBuilder(); bool flag = false; try { if (!memoryTraceBuilder.InsideTraceCall) { memoryTraceBuilder.BeginEntry(traceType, componentGuid, traceTag, id, format); memoryTraceBuilder.AddArgument <T0>(argument0); memoryTraceBuilder.AddArgument <T1>(argument1); memoryTraceBuilder.AddArgument <T2>(argument2); memoryTraceBuilder.EndEntry(); } flag = true; } finally { if (!flag) { memoryTraceBuilder.Reset(); } } }
internal static void AddTraceArgument(MemoryTraceBuilder builder, object argument) { if (argument == null) { builder.AddArgument(string.Empty); return; } if (argument is int) { builder.AddArgument((int)argument); return; } if (argument is long) { builder.AddArgument((long)argument); return; } if (argument is Guid) { builder.AddArgument((Guid)argument); return; } ITraceable traceable = argument as ITraceable; if (traceable != null) { builder.AddArgument <ITraceable>(traceable); return; } builder.AddArgument <object>(argument); }