Exemple #1
0
            public void BeforeInvoke(ICallInvocation invocation)
            {
                if (!isInit)
                {
                    isInit = true;
                    var m        = invocation.MethodBase;
                    var type     = m.DeclaringType;
                    var timeAttr = m.GetCustomAttribute <PerformanceTimeAttribute>(true);
                    if (!string.IsNullOrEmpty(timeAttr.Method))
                    {
                        var bindingFlags = BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
                        var types        = new Type[] { typeof(PerformanceTimeContext) };
                        callbackMethod = type.GetMethod(timeAttr.Method, types, bindingFlags);
                    }
                }

                PerformanceTimeContext ctx = new PerformanceTimeContext()
                {
                    Target    = invocation.Target,
                    Method    = invocation.MethodBase,
                    StartTime = DateTime.Now,
                };

                invocation.Data[key] = ctx;
            }
 //[CompileHoldName]
 static void PerformanceLog(PerformanceTimeContext context)
 {
     PerformanceTest.context = context;
     Console.WriteLine(context.Method + "  " + context.Elapsed.TotalMilliseconds);
 }