Beispiel #1
0
        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())}"
                      );
        }