Ejemplo n.º 1
0
        public static bool TryGetEnumValueNode(IXamlType enumType, string value, IXamlLineInfo lineInfo, out XamlConstantNode rv)
        {
            if (TryGetEnumValue(enumType, value, out var constant))
            {
                rv = new XamlConstantNode(lineInfo, enumType, constant);
                return(true);
            }

            rv = null;
            return(false);
        }
Ejemplo n.º 2
0
        public static bool ParseConstantIfTypeAllows(string s, IXamlType type, IXamlLineInfo info, out XamlConstantNode rv)
        {
            rv = null;
            if (type.Namespace != "System")
            {
                return(false);
            }

            object Parse()
            {
                if (type.Name == "Byte")
                {
                    return(byte.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "SByte")
                {
                    return(sbyte.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "Int16")
                {
                    return(Int16.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "UInt16")
                {
                    return(UInt16.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "Int32")
                {
                    return(Int32.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "UInt32")
                {
                    return(UInt32.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "Int64")
                {
                    return(Int64.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "UInt64")
                {
                    return(UInt64.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "Single")
                {
                    return(Single.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "Double")
                {
                    return(Double.Parse(s, CultureInfo.InvariantCulture));
                }
                if (type.Name == "Boolean")
                {
                    return(Boolean.Parse(s));
                }
                return(null);
            }

            var r = Parse();

            if (r != null)
            {
                rv = new XamlConstantNode(info, type, r);
                return(true);
            }

            return(false);
        }