public static ISchemaType CreateInstanceByString(string newvalue) { // is it a boolean? if( newvalue.ToLower().CompareTo("false")==0 ) return new SchemaBoolean( false ); if( newvalue.ToLower().CompareTo("true")==0 ) return new SchemaBoolean( true ); // is it a kind of dateTime value? try { SchemaDateTime result = new SchemaDateTime( newvalue ); return result; } catch( StringParseException ) {} try { SchemaDuration result = new SchemaDuration( newvalue ); return result; } catch( StringParseException ) {} try { SchemaDate result = new SchemaDate( newvalue ); return result; } catch( StringParseException ) {} try { SchemaTime result = new SchemaTime( newvalue ); return result; } catch( StringParseException ) {} // is it a numeric value try { decimal tmp = Convert.ToDecimal(newvalue, CultureInfo.InvariantCulture); if( newvalue.IndexOf(".") < 0 ) { if( tmp <= Int32.MaxValue && tmp >= Int32.MinValue ) return new SchemaInt( (int)tmp ); return new SchemaLong( (long)tmp ); } else { return new SchemaDecimal( tmp ); } } catch (FormatException ) { // non of all - use string return new SchemaString( newvalue ); } }
public SchemaDuration(SchemaDuration obj) { myValue = obj.myValue; months = obj.months; years = obj.years; isEmpty = obj.isEmpty; isNull = obj.isNull; }