public override IXsltContextFunction ResolveFunction(string prefix, string name, XPathResultType[] argTypes) {
IXsltContextFunction func = null;
if(prefix.Length == 0) {
func = s_FunctionTable[name] as IXsltContextFunction;
} else {
string ns = this.LookupNamespace(prefix);
if (ns == Keywords.s_MsXsltNamespace && name == f_NodeSet) {
func = s_FuncNodeSet;
} else {
object extension;
func = GetExtentionMethod(ns, name, argTypes, out extension);
if(extension == null) {
throw XsltException.Create(Res.Xslt_ScriptInvalidPrefix, prefix);
}
}
}
if (func == null) {
throw XsltException.Create(Res.Xslt_UnknownXsltFunction, name);
}
if (argTypes.Length < func.Minargs || func.Maxargs < argTypes.Length) {
throw XsltException.Create(Res.Xslt_WrongNumberArgs, name, argTypes.Length.ToString(CultureInfo.InvariantCulture));
}
return func;
}