internal static object FromXmlString(TypeData type, string value) { if (value == null) { return(null); } switch (type.XmlType) { case "boolean": return(XmlConvert.ToBoolean(value)); case "unsignedByte": return(XmlConvert.ToByte(value)); case "char": return((char)XmlConvert.ToInt32(value)); #if NET_2_0 case "dateTime": return(XmlConvert.ToDateTime(value, XmlDateTimeSerializationMode.RoundtripKind)); case "date": return(DateTime.ParseExact(value, "yyyy-MM-dd", null)); case "time": return(DateTime.ParseExact(value, "HH:mm:ss.FFFFFFF", null)); #else case "dateTime": return(XmlConvert.ToDateTime(value, XmlDateTimeSerializationMode.Unspecified)); case "date": return(DateTime.ParseExact(value, "yyyy-MM-dd", null)); case "time": return(DateTime.ParseExact(value, "HH:mm:ss.fffffffzzz", null)); #endif case "BigInteger": return(XmlConvert.ToDecimal(value)); case "double": return(XmlConvert.ToDouble(value)); case "short": return(XmlConvert.ToInt16(value)); case "int": return(XmlConvert.ToInt32(value)); case "long": return(XmlConvert.ToInt64(value)); case "byte": return(XmlConvert.ToSByte(value)); case "float": return(XmlConvert.ToSingle(value)); case "unsignedShort": return(XmlConvert.ToUInt16(value)); case "unsignedInt": return(XmlConvert.ToUInt32(value)); case "unsignedLong": return(XmlConvert.ToUInt64(value)); case "guid": return(XmlConvert.ToGuid(value)); case "base64": case "base64Binary": return(Convert.FromBase64String(value)); case "hexBinary": return(XmlConverterEx.FromBinHexString(value)); case "duration": return(value); default: if (type.Type != null) { return(Convert.ChangeType(value, type.Type)); } else { return(value); } } }
protected static byte[] ToByteArrayHex(string value) { return(XmlConverterEx.FromBinHexString(value)); }