System.Xml.Xsl.Runtime.XmlExtensionFunction.Bind C# (CSharp) Méthode

Bind() public méthode

Bind to the CLR type specified in the Init() call. If a matching method cannot be found, throw an exception.
public Bind ( ) : void
Résultat void
        public void Bind() {
            MethodInfo[] methods = this.objectType.GetMethods(this.flags);
            MethodInfo methMatch = null;
            bool ignoreCase = (this.flags & BindingFlags.IgnoreCase) != 0;
            StringComparison comparison = ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal;

            // Find method in object type
            foreach (MethodInfo methSearch in methods) {
                if (methSearch.Name.Equals(this.name, comparison) && (this.numArgs == -1 || methSearch.GetParameters().Length == this.numArgs)) {
                    if (methMatch != null)
                        throw new XslTransformException(/*[XT_037]*/Res.XmlIl_AmbiguousExtensionMethod, this.namespaceUri, this.name, this.numArgs.ToString(CultureInfo.InvariantCulture));

                    methMatch = methSearch;
                }
            }

            if (methMatch == null) {
                methods = this.objectType.GetMethods(this.flags | BindingFlags.NonPublic);
                foreach (MethodInfo methSearch in methods) {
                    if (methSearch.Name.Equals(this.name, comparison) && methSearch.GetParameters().Length == this.numArgs)
                        throw new XslTransformException(/*[XT_038]*/Res.XmlIl_NonPublicExtensionMethod, this.namespaceUri, this.name);
                }
                throw new XslTransformException(/*[XT_039]*/Res.XmlIl_NoExtensionMethod, this.namespaceUri, this.name, this.numArgs.ToString(CultureInfo.InvariantCulture));
            }

            if (methMatch.IsGenericMethodDefinition)
                throw new XslTransformException(/*[XT_040]*/Res.XmlIl_GenericExtensionMethod, this.namespaceUri, this.name);

            Debug.Assert(methMatch.ContainsGenericParameters == false);

            Bind(methMatch);
        }

Same methods

XmlExtensionFunction::Bind ( MethodInfo meth ) : void