public static WoopsaValue CreateChecked(string text, WoopsaValueType type, DateTime? timestamp = null)
{
try
{
// Sanity check for the value passed in argument
switch (type)
{
case WoopsaValueType.Integer:
Int64.Parse(text, CultureInfo.InvariantCulture);
break;
case WoopsaValueType.Real:
Double.Parse(text, CultureInfo.InvariantCulture);
break;
case WoopsaValueType.Logical:
Boolean.Parse(text);
text = text.ToLower(); // .NET and JSON serialize booleans differently (.NET uses a capital first letter) :/
break;
case WoopsaValueType.Text:
if (text == null)
text = string.Empty;
break;
case WoopsaValueType.DateTime:
DateTime.Parse(text, CultureInfo.InvariantCulture);
break;
case WoopsaValueType.TimeSpan:
Double.Parse(text, CultureInfo.InvariantCulture);
break;
}
}
catch (Exception)
{
throw new WoopsaException(String.Format("Cannot create a WoopsaValue of type {0} from string \"{1}\"", type.ToString(), text));
}
return CreateUnchecked(text, type, timestamp);
}