private bool CalculateCandidateScore(CandidateMethod candidateMethod)
{
ParameterInfo[] parameters = candidateMethod.Parameters;
for (int i = 0; i < candidateMethod.MinimumArgumentCount; ++i)
{
if (parameters[i].IsOut) return false;
if (!CalculateCandidateArgumentScore(candidateMethod, i, parameters[i].ParameterType))
{
return false;
}
}
if (candidateMethod.VarArgs)
{
Type varArgItemType = candidateMethod.VarArgsParameterType;
for (int i = candidateMethod.MinimumArgumentCount; i < _arguments.Length; ++i)
{
if (!CalculateCandidateArgumentScore(candidateMethod, i, varArgItemType))
{
return false;
}
}
}
return true;
}