Ejemplo n.º 1
0
        /// <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.");
                }
            }
        }