System.Xml.Xsl.Runtime.XsltFunctions.MSNumber C# (CSharp) Method

MSNumber() public static method

public static MSNumber ( IList value ) : double
value IList
return double
        public static double MSNumber(IList<XPathItem> value)
        {
            XsltLibrary.CheckXsltValue(value);
            if (value.Count == 0)
            {
                return Double.NaN;
            }
            XPathItem item = value[0];

            string stringValue;

            if (item.IsNode)
            {
                stringValue = item.Value;
            }
            else
            {
                Type itemType = item.ValueType;
                if (itemType == XsltConvert.StringType)
                {
                    stringValue = item.Value;
                }
                else if (itemType == XsltConvert.DoubleType)
                {
                    return item.ValueAsDouble;
                }
                else
                {
                    Debug.Assert(itemType == XsltConvert.BooleanType, "Unexpected type of atomic value " + itemType.ToString());
                    return item.ValueAsBoolean ? 1d : 0d;
                }
            }

            Debug.Assert(stringValue != null);
            double d;
            if (XmlConvert.TryToDouble(stringValue, out d) != null)
            {
                d = double.NaN;
            }
            return d;
        }