FindMostDerivedNewSlotMeth() static private method

static private FindMostDerivedNewSlotMeth ( MethodBase match, int cMatches ) : MethodBase
match System.Reflection.MethodBase
cMatches int
return System.Reflection.MethodBase
        // Token: 0x06000D98 RID: 3480 RVA: 0x00029940 File Offset: 0x00027B40
        public static MethodBase ExactBinding(MethodBase[] match, Type[] types, ParameterModifier[] modifiers)
        {
            if (match == null)
            {
                throw new ArgumentNullException("match");
            }
            MethodBase[] array = new MethodBase[match.Length];
            int          num   = 0;

            for (int i = 0; i < match.Length; i++)
            {
                ParameterInfo[] parametersNoCopy = match[i].GetParametersNoCopy();
                if (parametersNoCopy.Length != 0)
                {
                    int j;
                    for (j = 0; j < types.Length; j++)
                    {
                        Type parameterType = parametersNoCopy[j].ParameterType;
                        if (!parameterType.Equals(types[j]))
                        {
                            break;
                        }
                    }
                    if (j >= types.Length)
                    {
                        array[num] = match[i];
                        num++;
                    }
                }
            }
            if (num == 0)
            {
                return(null);
            }
            if (num == 1)
            {
                return(array[0]);
            }
            return(DefaultBinder.FindMostDerivedNewSlotMeth(array, num));
        }
Beispiel #2
0
        public static MethodBase ExactBinding(MethodBase[] match, Type[] types, ParameterModifier[] modifiers)
        {
            if (match == null)
            {
                throw new ArgumentNullException("match");
            }
            MethodBase[] match1   = new MethodBase[match.Length];
            int          cMatches = 0;

            for (int index1 = 0; index1 < match.Length; ++index1)
            {
                ParameterInfo[] parametersNoCopy = match[index1].GetParametersNoCopy();
                if (parametersNoCopy.Length != 0)
                {
                    int index2 = 0;
                    while (index2 < types.Length && parametersNoCopy[index2].ParameterType.Equals(types[index2]))
                    {
                        ++index2;
                    }
                    if (index2 >= types.Length)
                    {
                        match1[cMatches] = match[index1];
                        ++cMatches;
                    }
                }
            }
            if (cMatches == 0)
            {
                return((MethodBase)null);
            }
            if (cMatches == 1)
            {
                return(match1[0]);
            }
            return(DefaultBinder.FindMostDerivedNewSlotMeth(match1, cMatches));
        }