Baku.LibqiDotNet.QiSignatureValidityChecker.CheckValidity C# (CSharp) Method

CheckValidity() public static method

メソッドの引数リストと実際に渡す予定の引数を比較し、妥当な対応が取れているかを確認します。
public static CheckValidity ( string signature, QiAnyValue args ) : bool
signature string ターゲットのシグネチャ(全体を囲うタプルの丸括弧を含む)
args QiAnyValue 実際の引数のシグネチャ
return bool
        public static bool CheckValidity(string signature, QiAnyValue[] args)
            => CheckValiditySubroutine(
                signature.Substring(1, signature.Length - 2),
                string.Join("", args.Select(a => a.Signature).ToArray())
                );

Usage Example

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())}"
                      );
        }