示例#1
0
        private Expression FetchModelMethod(string name, IList <Expression> args)
        {
            var signatures = ContextType.GetRuntimeMethods()
                             .Where(mi => name.Equals(mi.Name) && mi.GetParameters().Length == args.Count)
                             .ToList();

            if (signatures.Count == 0)
            {
                return(null);
            }
            if (signatures.Count > 1)
            {
                throw new InvalidOperationException(string.Format("Function {0} accepting {1} arguments is ambiguous.",
                                                                  name, args.Count));
            }

            return(CreateMethodCallExpression(ContextExpression, signatures.Single(), args));
        }