public static void ReflectionInvoke(MethodInfo m, InvokeMethod obj) { //var obj = new InvokeMethod(); //var m = CreateMethodInfo(obj); m.Invoke(obj, new object[] { InvokeTimes }); }
//public static void EmitInfoke() //{ //} #endregion #region PrepareEnvironment private static MethodInfo CreateMethodInfo(InvokeMethod obj) { var t = typeof(InvokeMethod); var m = t.GetMethod("Do"); return m; }
public void IlEmitInvoke() { var add = CreateIlMethod(); // var obj = new InvokeMethod(); add(obj, InvokeTimes); }
private static JobAction CreateDelegateAction() { var obj = new InvokeMethod(); var action = Delegate.CreateDelegate(typeof(JobAction), obj, CreateMethodInfo(obj)) as JobAction; return action; }
public static void DelegateInvoke() { var obj = new InvokeMethod(); var action = CreateDelegate(obj); action(InvokeTimes); }
public static void LambdaInvoke() { var obj = new InvokeMethod(); var action = CreateLambda(); action.Invoke(obj, InvokeTimes); }
public static void InterfaceInvoke() { IInvokeMethod obj = new InvokeMethod(); obj.Do(InvokeTimes); }
public void ReflectionInvokeTest2() { var obj = new InvokeMethod(); MethodInfo m = null; CodeTimer.Time("ReflectionInvoke.Create", CreateTimes, () => m = CreateMethodInfo(obj)); CodeTimer.Time("ReflectionInvoke", InvokeTimes, () => ReflectionInvoke(m, obj)); }
public void IlEmitInvokeTest2() { Action<InvokeMethod, int> a = null; CodeTimer.Time("IL Emit InvokeTest.Create", CreateTimes, () => a = CreateIlMethod()); var obj = new InvokeMethod(); CodeTimer.Time("IL Emit InvokeTest", InvokeTimes, () => a.Invoke(obj, InvokeTimes)); }
public static void DirectInvoke() { var obj = new InvokeMethod(); obj.Do(InvokeTimes); }
public void DynamicInvokeTest2() { CodeTimer.Time("DynamicInvokeTest.Create", CreateTimes, () => { dynamic a = new InvokeMethod(); }); dynamic b = new InvokeMethod(); CodeTimer.Time("DynamicInvokeTest", InvokeTimes, () => b.Do(InvokeTimes)); }
public void DelegateInvokeTest2() { var obj = new InvokeMethod(); Action<int> a = null; CodeTimer.Time("DelegateInvokeTest.Create", CreateTimes, () => a = CreateDelegate(obj)); CodeTimer.Time("DelegateInvokeTest", InvokeTimes, () => a.Invoke(InvokeTimes)); }
public void LambdaInvokeTest2() { var obj = new InvokeMethod(); Action<InvokeMethod, int> a = CodeTimer.Time<int, Action<InvokeMethod, int>>("LambdaInvokeTest.Create", CreateTimes, (int i) => CreateLambda(), InvokeTimes); CodeTimer.Time<Tuple<InvokeMethod, Action<InvokeMethod, int>, int>, object>("LambdaInvokeTest", InvokeTimes, (tuple) => { tuple.Item2(tuple.Item1, tuple.Item3); return null; }, new Tuple<InvokeMethod, Action<InvokeMethod, int>, int>(obj, a, InvokeTimes));// Tuple<InvokeMethod, Action<InvokeMethod, int>>()); }
private static Action<int> CreateDelegate(InvokeMethod obj) { var action = new Action<int>(obj.Do); return action; }
public static void DynamicInvoke() { dynamic obj = new InvokeMethod(); obj.Do(InvokeTimes); }
public void DynamicCallTest() { dynamic d = new InvokeMethod(); Assert.IsNotNull(d.Str); dynamic d2 = Activator.CreateInstance("CSharpFeatures", "CSharpFeatures.Dynamic.InvokeMethod2"); Assert.AreEqual("InvokeMethod2", d2.Str); dynamic d3 = InvokeMethod.GetInstance(); Assert.AreEqual("InvokeMethod2", d3.Str); }
public void DirectInvokeTest2() { var obj = new InvokeMethod(); CodeTimer.Time("DirectInvokeTest.Create", CreateTimes, () => new InvokeMethod()); CodeTimer.Time("DirectInvokeTest", InvokeTimes, () => obj.Do(InvokeTimes)); }