GetHierarchyDepth() static private method

static private GetHierarchyDepth ( Type t ) : int
t Type
return int
        // Token: 0x06000D9C RID: 3484 RVA: 0x00029C68 File Offset: 0x00027E68
        private static int FindMostSpecificMethod(MethodBase m1, int[] paramOrder1, Type paramArrayType1, MethodBase m2, int[] paramOrder2, Type paramArrayType2, Type[] types, object[] args)
        {
            int num = DefaultBinder.FindMostSpecific(m1.GetParametersNoCopy(), paramOrder1, paramArrayType1, m2.GetParametersNoCopy(), paramOrder2, paramArrayType2, types, args);

            if (num != 0)
            {
                return(num);
            }
            if (!DefaultBinder.CompareMethodSigAndName(m1, m2))
            {
                return(0);
            }
            int hierarchyDepth  = DefaultBinder.GetHierarchyDepth(m1.DeclaringType);
            int hierarchyDepth2 = DefaultBinder.GetHierarchyDepth(m2.DeclaringType);

            if (hierarchyDepth == hierarchyDepth2)
            {
                return(0);
            }
            if (hierarchyDepth < hierarchyDepth2)
            {
                return(2);
            }
            return(1);
        }
Beispiel #2
0
        private static int FindMostSpecificProperty(PropertyInfo cur1, PropertyInfo cur2)
        {
            if (!(cur1.Name == cur2.Name))
            {
                return(0);
            }
            int hierarchyDepth1 = DefaultBinder.GetHierarchyDepth(cur1.DeclaringType);
            int hierarchyDepth2 = DefaultBinder.GetHierarchyDepth(cur2.DeclaringType);

            if (hierarchyDepth1 == hierarchyDepth2)
            {
                return(0);
            }
            return(hierarchyDepth1 < hierarchyDepth2 ? 2 : 1);
        }
        // Token: 0x06000D9D RID: 3485 RVA: 0x00029CC8 File Offset: 0x00027EC8
        private static int FindMostSpecificField(FieldInfo cur1, FieldInfo cur2)
        {
            if (!(cur1.Name == cur2.Name))
            {
                return(0);
            }
            int hierarchyDepth  = DefaultBinder.GetHierarchyDepth(cur1.DeclaringType);
            int hierarchyDepth2 = DefaultBinder.GetHierarchyDepth(cur2.DeclaringType);

            if (hierarchyDepth == hierarchyDepth2)
            {
                return(0);
            }
            if (hierarchyDepth < hierarchyDepth2)
            {
                return(2);
            }
            return(1);
        }
        // Token: 0x06000DA1 RID: 3489 RVA: 0x00029DD0 File Offset: 0x00027FD0
        internal static MethodBase FindMostDerivedNewSlotMeth(MethodBase[] match, int cMatches)
        {
            int        num    = 0;
            MethodBase result = null;

            for (int i = 0; i < cMatches; i++)
            {
                int hierarchyDepth = DefaultBinder.GetHierarchyDepth(match[i].DeclaringType);
                if (hierarchyDepth == num)
                {
                    throw new AmbiguousMatchException(Environment.GetResourceString("Arg_AmbiguousMatchException"));
                }
                if (hierarchyDepth > num)
                {
                    num    = hierarchyDepth;
                    result = match[i];
                }
            }
            return(result);
        }