public override double ToNumber()
{
if (this.Value == null)
{
return(0.0);
}
if (!(this.Value is IConvertible))
{
return(double.NaN);
}
switch (Convert.GetTypeCode(this.Value))
{
case TypeCode.Boolean:
return(JsBoolean.BooleanToNumber((bool)this.Value));
case TypeCode.Char:
case TypeCode.String:
return(JsString.StringToNumber((string)this.Value));
case TypeCode.DateTime:
return(JsDate.DateToDouble((DateTime)this.Value));
default:
return(Convert.ToDouble(this.Value));
}
}