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); }
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); } }