public static object Do(object Me, MethodBase M, List <object> O) { if ((!Description.SpecialVar) && (MList.L.Count > 0)) { lock (MList.threadLock) { O = MList.L.Select(x => x); MList.L.Clear(); } } var e = Z.GetfromM(M); var u = e.O.GetfromO(Me); MethodInfo BM, EM; if (u == null) { BM = e.BasicBeginM; EM = e.BasicEndM; } else { BM = u.BeginM; EM = u.EndM; } if (BM != null) { BM.Invoke(null, new object[] { Me, M, O }); } byte[] R = e.BegCode; e.HandlersConditionsInst.ForEach(x => R = AOP.Handlers[x](R, Me, e, O)); InjectionHelper.UpdateILCodes(M, R); object Res = M.Invoke(Me, O.ToArray()); // InjectionHelper.UpdateILCodes(M, this.GetType().GetMethod("ORunner_" + O.Count.ToString()).GetMethodBody().GetILAsByteArray()); InjectionHelper.UpdateILCodes(M, e.ChangeCode); if (EM != null) { EM.Invoke(null, new object[] { Res, Me, M, O }); } return(Res); }