internal static String ToString(Object data, InternalPrimitiveTypeE code)
{
// Any changes here need to also be made in System.Runtime.Remoting.Message.cs::SoapCoerceArg
String value;
InternalST.Soap( "Converter", "ToString Entry ", ((data==null)?"<null>":data.GetType().ToString())," ",data," " , ((Enum)code).ToString());
switch (code)
{
case InternalPrimitiveTypeE.Boolean:
bool b = (bool)data;
if (b)
value = "true";
else
value = "false";
break;
case InternalPrimitiveTypeE.TimeSpan:
value = SoapDuration.ToString((TimeSpan)data);
break;
case InternalPrimitiveTypeE.DateTime:
value = SoapDateTime.ToString((DateTime)data);
break;
case InternalPrimitiveTypeE.Invalid:
// ToString should not be called if data is an object or string
InternalST.SoapAssert(false, "[Converter.ToString]!InternalPrimitiveTypeE.Invalid ");
value = data.ToString();
break;
case InternalPrimitiveTypeE.Double:
Double doublevalue = (Double)data;
if (Double.IsPositiveInfinity(doublevalue))
value = "INF";
else if (Double.IsNegativeInfinity(doublevalue))
value = "-INF";
else
value = doublevalue.ToString("R", CultureInfo.InvariantCulture);
break;
case InternalPrimitiveTypeE.Single:
Single singlevalue = (Single)data;
if (Single.IsPositiveInfinity(singlevalue))
value = "INF";
else if (Single.IsNegativeInfinity(singlevalue))
value = "-INF";
else
value = singlevalue.ToString("R", CultureInfo.InvariantCulture);
break;
case InternalPrimitiveTypeE.Time:
case InternalPrimitiveTypeE.Date:
case InternalPrimitiveTypeE.YearMonth:
case InternalPrimitiveTypeE.Year:
case InternalPrimitiveTypeE.MonthDay:
case InternalPrimitiveTypeE.Day:
case InternalPrimitiveTypeE.Month:
case InternalPrimitiveTypeE.HexBinary:
case InternalPrimitiveTypeE.Base64Binary:
case InternalPrimitiveTypeE.Integer:
case InternalPrimitiveTypeE.PositiveInteger:
case InternalPrimitiveTypeE. NonPositiveInteger:
case InternalPrimitiveTypeE.NonNegativeInteger:
case InternalPrimitiveTypeE.NegativeInteger:
case InternalPrimitiveTypeE.AnyUri:
case InternalPrimitiveTypeE.QName:
case InternalPrimitiveTypeE.Notation:
case InternalPrimitiveTypeE.NormalizedString:
case InternalPrimitiveTypeE.Token:
case InternalPrimitiveTypeE.Language:
case InternalPrimitiveTypeE.Name:
case InternalPrimitiveTypeE.Idrefs:
case InternalPrimitiveTypeE.Entities:
case InternalPrimitiveTypeE.Nmtoken:
case InternalPrimitiveTypeE.Nmtokens:
case InternalPrimitiveTypeE.NcName:
case InternalPrimitiveTypeE.Id:
case InternalPrimitiveTypeE.Idref:
case InternalPrimitiveTypeE.Entity:
value = data.ToString();
break;
default:
value = (String)Convert.ChangeType(data, typeofString, CultureInfo.InvariantCulture);
break;
}
InternalST.Soap( "Converter", "ToString Exit ",value);
return value;
}