Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FindMostSpecificMethod()

static int System.DefaultBinder.FindMostSpecificMethod ( MethodBase m1,
int[] paramOrder1,
Type paramArrayType1,
MethodBase m2,
int[] paramOrder2,
Type paramArrayType2,
Type[] types,
object[] args )
inlinestaticprivateinherited

Definition at line 857 of file DefaultBinder.cs.

858 {
859 int num = FindMostSpecific(m1.GetParametersNoCopy(), paramOrder1, paramArrayType1, m2.GetParametersNoCopy(), paramOrder2, paramArrayType2, types, args);
860 if (num != 0)
861 {
862 return num;
863 }
864 if (CompareMethodSig(m1, m2))
865 {
866 int hierarchyDepth = GetHierarchyDepth(m1.DeclaringType);
867 int hierarchyDepth2 = GetHierarchyDepth(m2.DeclaringType);
868 if (hierarchyDepth == hierarchyDepth2)
869 {
870 return 0;
871 }
872 if (hierarchyDepth < hierarchyDepth2)
873 {
874 return 2;
875 }
876 return 1;
877 }
878 return 0;
879 }
static int GetHierarchyDepth(Type t)
static int FindMostSpecific(ParameterInfo[] p1, int[] paramOrder1, Type paramArrayType1, ParameterInfo[] p2, int[] paramOrder2, Type paramArrayType2, Type[] types, object[] args)
static bool CompareMethodSig(MethodBase m1, MethodBase m2)
virtual ParameterInfo[] GetParametersNoCopy()

References System.DefaultBinder.CompareMethodSig(), System.Reflection.MemberInfo.DeclaringType, System.DefaultBinder.FindMostSpecific(), System.DefaultBinder.GetHierarchyDepth(), and System.Reflection.MethodBase.GetParametersNoCopy().

Referenced by System.DefaultBinder.BindToMethod(), and System.DefaultBinder.SelectMethod().