System.Xml.Schema.Datatype_List.TryParseValue C# (CSharp) Méthode

TryParseValue() private méthode

private TryParseValue ( object value, XmlNameTable nameTable, IXmlNamespaceResolver namespaceResolver, object &typedValue ) : Exception
value object
nameTable System.Xml.XmlNameTable
namespaceResolver IXmlNamespaceResolver
typedValue object
Résultat System.Exception
        internal override Exception TryParseValue(object value, XmlNameTable nameTable, IXmlNamespaceResolver namespaceResolver, out object typedValue)
        {
            Exception exception;
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }
            string s = value as string;
            typedValue = null;
            if (s != null)
            {
                return TryParseValue(s, nameTable, namespaceResolver, out typedValue);
            }

            try
            {
                object valueToCheck = this.ValueConverter.ChangeType(value, this.ValueType, namespaceResolver);
                Array valuesToCheck = valueToCheck as Array;
                Debug.Assert(valuesToCheck != null);

                bool checkItemLexical = _itemType.HasLexicalFacets;
                bool checkItemValue = _itemType.HasValueFacets;
                object item;
                FacetsChecker itemFacetsChecker = _itemType.FacetsChecker;
                XmlValueConverter itemValueConverter = _itemType.ValueConverter;

                for (int i = 0; i < valuesToCheck.Length; i++)
                {
                    item = valuesToCheck.GetValue(i);
                    if (checkItemLexical)
                    {
                        string s1 = (string)itemValueConverter.ChangeType(item, typeof(System.String), namespaceResolver);
                        exception = itemFacetsChecker.CheckLexicalFacets(ref s1, _itemType);
                        if (exception != null) goto Error;
                    }
                    if (checkItemValue)
                    {
                        exception = itemFacetsChecker.CheckValueFacets(item, _itemType);
                        if (exception != null) goto Error;
                    }
                }

                //Check facets on the list itself
                if (this.HasLexicalFacets)
                {
                    string s1 = (string)this.ValueConverter.ChangeType(valueToCheck, typeof(System.String), namespaceResolver);
                    exception = listFacetsChecker.CheckLexicalFacets(ref s1, this);
                    if (exception != null) goto Error;
                }
                if (this.HasValueFacets)
                {
                    exception = listFacetsChecker.CheckValueFacets(valueToCheck, this);
                    if (exception != null) goto Error;
                }
                typedValue = valueToCheck;
                return null;
            }
            catch (FormatException e)
            { //Catching for exceptions thrown by ValueConverter
                exception = e;
            }
            catch (InvalidCastException e)
            { //Catching for exceptions thrown by ValueConverter
                exception = e;
            }
            catch (OverflowException e)
            { //Catching for exceptions thrown by ValueConverter
                exception = e;
            }
            catch (ArgumentException e)
            { //Catching for exceptions thrown by ValueConverter
                exception = e;
            }

        Error:
            return exception;
        }

Same methods

Datatype_List::TryParseValue ( string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, object &typedValue ) : Exception