private void AddRedirect(Type type1, MethodInfo method) { var parameters = method.GetParameters(); Type[] types; if (parameters.Length > 0 && parameters [0].ParameterType == type1) { types = parameters.Skip(1).Select(p => p.ParameterType).ToArray(); } else { types = parameters.Select(p => p.ParameterType).ToArray(); } var originalMethod = type1.GetMethod(method.Name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static, null, types, null); if (originalMethod == null) { Debug.Log("Cannot find " + method.Name); } redirects.Add(originalMethod, RedirectionHelper.RedirectCalls(originalMethod, method)); }