internal static Object FromString(String value, InternalPrimitiveTypeE code)
{
Object var;
InternalST.Soap( "Converter", "FromString Entry ",value," " , ((Enum)code).ToString());
switch (code)
{
case InternalPrimitiveTypeE.Boolean:
if (value == "1" || value == "true")
var = (bool)true;
else if (value == "0" || value =="false")
var = (bool)false;
else
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, SoapUtil.GetResourceString("Serialization_typeCoercion"),value, "Boolean"));
break;
case InternalPrimitiveTypeE.TimeSpan:
var = SoapDuration.Parse(value);
break;
case InternalPrimitiveTypeE.DateTime:
var = SoapDateTime.Parse(value);
break;
case InternalPrimitiveTypeE.Double:
if (value == "INF")
var = Double.PositiveInfinity;
else if (value == "-INF")
var = Double.NegativeInfinity;
else
var = Double.Parse(value, CultureInfo.InvariantCulture);
break;
case InternalPrimitiveTypeE.Single:
if (value == "INF")
var = Single.PositiveInfinity;
else if (value == "-INF")
var = Single.NegativeInfinity;
else
var = Single.Parse(value, CultureInfo.InvariantCulture);
break;
case InternalPrimitiveTypeE.Time:
var= SoapTime.Parse(value);
break;
case InternalPrimitiveTypeE.Date:
var= SoapDate.Parse(value);
break;
case InternalPrimitiveTypeE.YearMonth:
var= SoapYearMonth.Parse(value);
break;
case InternalPrimitiveTypeE.Year:
var= SoapYear.Parse(value);
break;
case InternalPrimitiveTypeE.MonthDay:
var= SoapMonthDay.Parse(value);
break;
case InternalPrimitiveTypeE.Day:
var= SoapDay.Parse(value);
break;
case InternalPrimitiveTypeE.Month:
var= SoapMonth.Parse(value);
break;
case InternalPrimitiveTypeE.HexBinary:
var= SoapHexBinary.Parse(value);
break;
case InternalPrimitiveTypeE.Base64Binary:
var= SoapBase64Binary.Parse(value);
break;
case InternalPrimitiveTypeE.Integer:
var= SoapInteger.Parse(value);
break;
case InternalPrimitiveTypeE.PositiveInteger:
var= SoapPositiveInteger.Parse(value);
break;
case InternalPrimitiveTypeE. NonPositiveInteger:
var= SoapNonPositiveInteger.Parse(value);
break;
case InternalPrimitiveTypeE.NonNegativeInteger:
var= SoapNonNegativeInteger.Parse(value);
break;
case InternalPrimitiveTypeE.NegativeInteger:
var= SoapNegativeInteger.Parse(value);
break;
case InternalPrimitiveTypeE.AnyUri:
var= SoapAnyUri.Parse(value);
break;
case InternalPrimitiveTypeE.QName:
var= SoapQName.Parse(value);
break;
case InternalPrimitiveTypeE.Notation:
var= SoapNotation.Parse(value);
break;
case InternalPrimitiveTypeE.NormalizedString:
var= SoapNormalizedString.Parse(value);
break;
case InternalPrimitiveTypeE.Token:
var= SoapToken.Parse(value);
break;
case InternalPrimitiveTypeE.Language:
var= SoapLanguage.Parse(value);
break;
case InternalPrimitiveTypeE.Name:
var= SoapName.Parse(value);
break;
case InternalPrimitiveTypeE.Idrefs:
var= SoapIdrefs.Parse(value);
break;
case InternalPrimitiveTypeE.Entities:
var= SoapEntities.Parse(value);
break;
case InternalPrimitiveTypeE.Nmtoken:
var= SoapNmtoken.Parse(value);
break;
case InternalPrimitiveTypeE.Nmtokens:
var= SoapNmtokens.Parse(value);
break;
case InternalPrimitiveTypeE.NcName:
var= SoapNcName.Parse(value);
break;
case InternalPrimitiveTypeE.Id:
var= SoapId.Parse(value);
break;
case InternalPrimitiveTypeE.Idref:
var= SoapIdref.Parse(value);
break;
case InternalPrimitiveTypeE.Entity:
var= SoapEntity.Parse(value);
break;
default:
// InternalPrimitiveTypeE needs to be a primitive type
InternalST.SoapAssert((code != InternalPrimitiveTypeE.Invalid), "[Converter.FromString]!InternalPrimitiveTypeE.Invalid ");
if (code != InternalPrimitiveTypeE.Invalid)
var = Convert.ChangeType(value, ToTypeCode(code), CultureInfo.InvariantCulture);
else
var = value;
break;
}
InternalST.Soap( "Converter", "FromString Exit "+((var == null)?"null":var+" var type "+((var==null)?"<null>":var.GetType().ToString())));
return var;
}