/// <summary> /// Validates the formatted HA value and returns a Variant. /// </summary> public static Variant ValidateValue(object formattedValue) { string value = formattedValue as string; if (String.IsNullOrEmpty(value)) { return(Variant.Null); } if (String.Compare(value, "true", StringComparison.InvariantCultureIgnoreCase) == 0) { return(new Variant(true, TypeInfo.Scalars.Boolean)); } if (String.Compare(value, "false", StringComparison.InvariantCultureIgnoreCase) == 0) { return(new Variant(false, TypeInfo.Scalars.Boolean)); } try { return(new Variant(Convert.ToDouble(value), TypeInfo.Scalars.Double)); } catch { try { uint code = StatusCodes.GetIdentifier(value); return(new Variant(new StatusCode(code), TypeInfo.Scalars.StatusCode)); } catch { throw new FormatException("Could not parse field value."); } } }