public static CheckValidity ( string signature, |
||
signature | string | ターゲットのシグネチャ(全体を囲うタプルの丸括弧を含む) |
args | 実際の引数のシグネチャ | |
return | bool |
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())}" ); }