static public ParamsPriority GetParamsPriority(Type t1, Type t2) { ParamsPriority paramsPriority; if ((paramsPriority = IsComplete(t1, t2)) != null) { return(paramsPriority); } var implicitCastPriority = IsImplicitCast(t1, t2); if (implicitCastPriority != 0) { paramsPriority = new ParamsPriority(); paramsPriority.implicitCastPriority = implicitCastPriority; paramsPriority.matchkind = ParamsPriority.MatchKind.ImplicitCastMatch; return(paramsPriority); } var upCastNest = IsUpCast(t1, t2); if (upCastNest != 0) { paramsPriority = new ParamsPriority(); paramsPriority.upCastNest = upCastNest; paramsPriority.matchkind = ParamsPriority.MatchKind.UpCastMatch; return(paramsPriority); } var concreteness = IsGeneric(t1, t2); if (concreteness != 0) { paramsPriority = new ParamsPriority(); paramsPriority.matchkind = ParamsPriority.MatchKind.GenericTypeMatch; paramsPriority.concreteness = concreteness; return(paramsPriority); } var genericUpCastInfo = GetGenericUpCastInfo(t1, t2); if (genericUpCastInfo != null) { paramsPriority = new ParamsPriority(); paramsPriority.upCastNest = genericUpCastInfo.Value.upCastNest; paramsPriority.matchkind = ParamsPriority.MatchKind.GenericTypeUpCastMatch; return(paramsPriority); } if (t2 == typeof(object)) { paramsPriority = new ParamsPriority(); paramsPriority.matchkind = ParamsPriority.MatchKind.ObjectMatch; return(paramsPriority); } return(null); }
//型が等しかったらtrue static public ParamsPriority IsComplete(Type t1, Type t2) { if (t1 == t2) { var paramsPriority = new ParamsPriority(); paramsPriority.matchkind = ParamsPriority.MatchKind.TypeMatch; return(paramsPriority); } return(null); }