public override JsInstance ToPrimitive(IGlobal global)
{
switch (Convert.GetTypeCode(Value)) {
case TypeCode.Boolean:
return global.BooleanClass.New((bool)Value);
case TypeCode.Char:
case TypeCode.String:
case TypeCode.Object:
return global.StringClass.New(Value.ToString());
case TypeCode.DateTime:
return global.DateClass.New((DateTime)Value);
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
case TypeCode.SByte:
case TypeCode.UInt16:
case TypeCode.UInt32:
case TypeCode.UInt64:
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
return global.NumberClass.New(Convert.ToDouble(Value));
case TypeCode.DBNull:
case TypeCode.Empty:
default:
break;
}
return JsUndefined.Instance;
}