Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ChangeType2()

static object System.Data.Common.SqlConvert.ChangeType2 ( object value,
StorageType stype,
Type type,
IFormatProvider formatProvider )
inlinestatic

Definition at line 323 of file SqlConvert.cs.

324 {
325 switch (stype)
326 {
327 case StorageType.SqlBinary:
329 case StorageType.SqlBoolean:
331 case StorageType.SqlByte:
332 return ConvertToSqlByte(value);
333 case StorageType.SqlBytes:
334 return ConvertToSqlBytes(value);
335 case StorageType.SqlChars:
336 return ConvertToSqlChars(value);
337 case StorageType.SqlDateTime:
339 case StorageType.SqlDecimal:
341 case StorageType.SqlDouble:
343 case StorageType.SqlGuid:
344 return ConvertToSqlGuid(value);
345 case StorageType.SqlInt16:
346 return ConvertToSqlInt16(value);
347 case StorageType.SqlInt32:
348 return ConvertToSqlInt32(value);
349 case StorageType.SqlInt64:
350 return ConvertToSqlInt64(value);
351 case StorageType.SqlMoney:
352 return ConvertToSqlMoney(value);
353 case StorageType.SqlSingle:
355 case StorageType.SqlString:
357 default:
358 {
359 if (DBNull.Value == value || value == null)
360 {
361 return DBNull.Value;
362 }
363 Type type2 = value.GetType();
364 StorageType storageType = DataStorage.GetStorageType(type2);
365 if ((uint)(storageType - 26) <= 14u)
366 {
367 throw ExceptionBuilder.ConvertFailed(type2, type);
368 }
369 if (StorageType.String == stype)
370 {
371 switch (storageType)
372 {
373 case StorageType.Boolean:
374 return ((IConvertible)(bool)value).ToString(formatProvider);
375 case StorageType.Char:
376 return ((IConvertible)(char)value).ToString(formatProvider);
377 case StorageType.SByte:
378 return ((sbyte)value).ToString(formatProvider);
379 case StorageType.Byte:
380 return ((byte)value).ToString(formatProvider);
381 case StorageType.Int16:
382 return ((short)value).ToString(formatProvider);
383 case StorageType.UInt16:
384 return ((ushort)value).ToString(formatProvider);
385 case StorageType.Int32:
386 return ((int)value).ToString(formatProvider);
387 case StorageType.UInt32:
388 return ((uint)value).ToString(formatProvider);
389 case StorageType.Int64:
390 return ((long)value).ToString(formatProvider);
391 case StorageType.UInt64:
392 return ((ulong)value).ToString(formatProvider);
393 case StorageType.Single:
394 return ((float)value).ToString(formatProvider);
395 case StorageType.Double:
396 return ((double)value).ToString(formatProvider);
397 case StorageType.Decimal:
398 return ((decimal)value).ToString(formatProvider);
399 case StorageType.DateTime:
400 return ((DateTime)value).ToString(formatProvider);
401 case StorageType.TimeSpan:
403 case StorageType.Guid:
404 return XmlConvert.ToString((Guid)value);
405 case StorageType.String:
406 return (string)value;
407 case StorageType.CharArray:
408 return new string((char[])value);
409 case StorageType.DateTimeOffset:
410 return ((DateTimeOffset)value).ToString(formatProvider);
411 default:
412 if (value is IConvertible convertible)
413 {
414 return convertible.ToString(formatProvider);
415 }
416 if (value is IFormattable formattable)
417 {
418 return formattable.ToString(null, formatProvider);
419 }
420 return value.ToString();
421 case StorageType.BigInteger:
422 break;
423 }
424 }
425 else
426 {
427 if (StorageType.TimeSpan == stype)
428 {
429 return storageType switch
430 {
432 StorageType.Int32 => new TimeSpan((int)value),
433 StorageType.Int64 => new TimeSpan((long)value),
434 _ => (TimeSpan)value,
435 };
436 }
437 if (StorageType.DateTimeOffset == stype)
438 {
439 return (DateTimeOffset)value;
440 }
441 if (StorageType.String == storageType)
442 {
443 switch (stype)
444 {
445 case StorageType.String:
446 return (string)value;
447 case StorageType.Boolean:
448 if ("1" == (string)value)
449 {
450 return true;
451 }
452 if ("0" == (string)value)
453 {
454 return false;
455 }
456 break;
457 case StorageType.Char:
458 return ((IConvertible)(string)value).ToChar(formatProvider);
459 case StorageType.SByte:
460 return ((IConvertible)(string)value).ToSByte(formatProvider);
461 case StorageType.Byte:
462 return ((IConvertible)(string)value).ToByte(formatProvider);
463 case StorageType.Int16:
464 return ((IConvertible)(string)value).ToInt16(formatProvider);
465 case StorageType.UInt16:
466 return ((IConvertible)(string)value).ToUInt16(formatProvider);
467 case StorageType.Int32:
468 return ((IConvertible)(string)value).ToInt32(formatProvider);
469 case StorageType.UInt32:
470 return ((IConvertible)(string)value).ToUInt32(formatProvider);
471 case StorageType.Int64:
472 return ((IConvertible)(string)value).ToInt64(formatProvider);
473 case StorageType.UInt64:
474 return ((IConvertible)(string)value).ToUInt64(formatProvider);
475 case StorageType.Single:
476 return ((IConvertible)(string)value).ToSingle(formatProvider);
477 case StorageType.Double:
478 return ((IConvertible)(string)value).ToDouble(formatProvider);
479 case StorageType.Decimal:
480 return ((IConvertible)(string)value).ToDecimal(formatProvider);
481 case StorageType.DateTime:
482 return ((IConvertible)(string)value).ToDateTime(formatProvider);
483 case StorageType.TimeSpan:
484 return XmlConvert.ToTimeSpan((string)value);
485 case StorageType.Guid:
486 return XmlConvert.ToGuid((string)value);
487 case StorageType.Uri:
488 return new Uri((string)value);
489 }
490 }
491 }
492 return Convert.ChangeType(value, type, formatProvider);
493 }
494 }
495 }
static SqlBoolean ConvertToSqlBoolean(object value)
static SqlBinary ConvertToSqlBinary(object value)
static SqlChars ConvertToSqlChars(object value)
static SqlDouble ConvertToSqlDouble(object value)
Definition SqlConvert.cs:85
static SqlDecimal ConvertToSqlDecimal(object value)
static SqlString ConvertToSqlString(object value)
static SqlBytes ConvertToSqlBytes(object value)
static SqlMoney ConvertToSqlMoney(object value)
static SqlInt32 ConvertToSqlInt32(object value)
Definition SqlConvert.cs:42
static SqlByte ConvertToSqlByte(object value)
Definition SqlConvert.cs:10
static SqlInt16 ConvertToSqlInt16(object value)
Definition SqlConvert.cs:25
static SqlDateTime ConvertToSqlDateTime(object value)
static SqlInt64 ConvertToSqlInt64(object value)
Definition SqlConvert.cs:62
static SqlGuid ConvertToSqlGuid(object value)
static SqlSingle ConvertToSqlSingle(object value)
static string ToString(bool value)
static TimeSpan ToTimeSpan(string s)
static Guid ToGuid(string s)

References System.Convert.ChangeType(), System.Data.ExceptionBuilder.ConvertFailed(), System.Data.Common.SqlConvert.ConvertToSqlBinary(), System.Data.Common.SqlConvert.ConvertToSqlBoolean(), System.Data.Common.SqlConvert.ConvertToSqlByte(), System.Data.Common.SqlConvert.ConvertToSqlBytes(), System.Data.Common.SqlConvert.ConvertToSqlChars(), System.Data.Common.SqlConvert.ConvertToSqlDateTime(), System.Data.Common.SqlConvert.ConvertToSqlDecimal(), System.Data.Common.SqlConvert.ConvertToSqlDouble(), System.Data.Common.SqlConvert.ConvertToSqlGuid(), System.Data.Common.SqlConvert.ConvertToSqlInt16(), System.Data.Common.SqlConvert.ConvertToSqlInt32(), System.Data.Common.SqlConvert.ConvertToSqlInt64(), System.Data.Common.SqlConvert.ConvertToSqlMoney(), System.Data.Common.SqlConvert.ConvertToSqlSingle(), System.Data.Common.SqlConvert.ConvertToSqlString(), System.Xml.Dictionary, System.Data.Common.DataStorage.GetStorageType(), System.Type.GetType(), System.Data.Common.TimeSpan, System.Xml.XmlConvert.ToGuid(), System.Xml.XmlConvert.ToString(), System.Xml.XmlConvert.ToTimeSpan(), System.type, System.Data.Common.Uri, System.DBNull.Value, and System.value.

Referenced by System.Data.Common.SqlConvert.ChangeTypeForDefaultValue(), System.Data.Select.Eval(), System.Data.LikeNode.Eval(), System.Data.FunctionNode.EvalFunction(), System.Data.DataExpression.Evaluate(), and System.Data.AutoIncrementInt64.SetCurrentAndIncrement().