예제 #1
0
        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));
        }