private string GetMethodSignature(QiAnyValue[] args)
{
if (Overloads.Count == 1)
{
return(Name + QiSignatures.MethodNameSuffix + Overloads.First().ArgumentSignature);
}
//オーバーロードがある場合は引数リストと見比べて適合するのがあるか判定
var fittedMethod = Overloads.FirstOrDefault(
ol => QiSignatureValidityChecker.CheckValidity(ol.ArgumentSignature, args)
);
if (fittedMethod != null)
{
return(Name + QiSignatures.MethodNameSuffix + fittedMethod.ArgumentSignature);
}
throw new InvalidOperationException(
$"Could not find proper overload for {Name}, " +
$"args: {QiTuple.Create(args).Signature}, " +
$"existing method signatures: {string.Join(",", Overloads.Select(ol => ol.ArgumentSignature).ToArray())}"
);
}