コード例 #1
0
 internal override Exception TryParseString(object value,
                                            NameTable nameTable,
                                            XNamespaceResolver resolver,
                                            out string parsedString)
 {
     parsedString = value as string;
     if (parsedString == null)
     {
         try {
             parsedString = (string)DataType.ChangeType(value, XTypedServices.typeOfString);
         }
         catch (Exception e)  {
             return(e);
         }
     }
     return(null);
 }
コード例 #2
0
        internal override Exception TryParseValue(object value,
                                                  NameTable nameTable,
                                                  XNamespaceResolver resolver,
                                                  out SimpleTypeValidator matchingType,
                                                  out object typedValue)
        {
            Exception e = TryMatchAtomicType(value, nameTable, resolver);

            matchingType = null;
            typedValue   = null;
            if (e != null)
            {
                return(e);
            }
            try
            {
                if (RestrictionFacets != null && RestrictionFacets.HasLexicalFacets)
                {
                    string parsedString = null;
                    e = TryParseString(value, nameTable, resolver, out parsedString);
                    if (e == null)
                    {
                        e = facetsChecker.CheckLexicalFacets(ref parsedString, value, nameTable, resolver, this);
                    }
                }

                if (e == null)
                {
                    e = facetsChecker.CheckValueFacets(value, this);
                }

                if (e == null)
                {
                    matchingType = this;
                    typedValue   = DataType.ChangeType(value, this.DataType.ValueType);
                }

                return(e);
            }
            catch (Exception ee)
            {
                return(ee);
            }
        }