GetPrecedence() static private méthode

static private GetPrecedence ( MethodBase mi ) : int
mi System.Reflection.MethodBase
Résultat int
        int IComparer.Compare(object m1, object m2)
        {
            var me1 = (MethodBase)m1;
            var me2 = (MethodBase)m2;

            if (me1.DeclaringType != me2.DeclaringType)
            {
                // m2's type derives from m1's type, favor m2
                if (me1.DeclaringType.IsAssignableFrom(me2.DeclaringType))
                {
                    return(1);
                }

                // m1's type derives from m2's type, favor m1
                if (me2.DeclaringType.IsAssignableFrom(me1.DeclaringType))
                {
                    return(-1);
                }
            }

            int p1 = MethodBinder.GetPrecedence((MethodBase)m1);
            int p2 = MethodBinder.GetPrecedence((MethodBase)m2);

            if (p1 < p2)
            {
                return(-1);
            }
            if (p1 > p2)
            {
                return(1);
            }
            return(0);
        }
Exemple #2
0
        int IComparer.Compare(Object m1, Object m2)
        {
            int p1 = MethodBinder.GetPrecedence((MethodBase)m1);
            int p2 = MethodBinder.GetPrecedence((MethodBase)m2);

            if (p1 < p2)
            {
                return(-1);
            }
            if (p1 > p2)
            {
                return(1);
            }
            return(0);
        }
        int IComparer <MaybeMethodBase> .Compare(MaybeMethodBase m1, MaybeMethodBase m2)
        {
            MethodBase me1 = m1.UnsafeValue;
            MethodBase me2 = m2.UnsafeValue;

            if (me1 == null && me2 == null)
            {
                return(0);
            }
            else if (me1 == null)
            {
                return(-1);
            }
            else if (me2 == null)
            {
                return(1);
            }

            if (me1.DeclaringType != me2.DeclaringType)
            {
                // m2's type derives from m1's type, favor m2
                if (me1.DeclaringType.IsAssignableFrom(me2.DeclaringType))
                {
                    return(1);
                }

                // m1's type derives from m2's type, favor m1
                if (me2.DeclaringType.IsAssignableFrom(me1.DeclaringType))
                {
                    return(-1);
                }
            }

            int p1 = MethodBinder.GetPrecedence(me1);
            int p2 = MethodBinder.GetPrecedence(me2);

            if (p1 < p2)
            {
                return(-1);
            }
            if (p1 > p2)
            {
                return(1);
            }
            return(0);
        }