Пример #1
0
        private static bool TryParseGuid(String g, GuidStyles flags, ref GuidResult result)
        {
            if (g == null)
            {
                result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                return(false);
            }
            String guidString = g.Trim();  //Remove Whitespace

            if (guidString.Length == 0)
            {
                result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                return(false);
            }

            // Check for dashes
            bool dashesExistInString = (guidString.IndexOf('-', 0) >= 0);

            if (dashesExistInString)
            {
                if ((flags & (GuidStyles.AllowDashes | GuidStyles.RequireDashes)) == 0)
                {
                    // dashes are not allowed
                    result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                    return(false);
                }
            }
            else
            {
                if ((flags & GuidStyles.RequireDashes) != 0)
                {
                    // dashes are required
                    result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                    return(false);
                }
            }

            // Check for braces
            bool bracesExistInString = (guidString.IndexOf('{', 0) >= 0);

            if (bracesExistInString)
            {
                if ((flags & (GuidStyles.AllowBraces | GuidStyles.RequireBraces)) == 0)
                {
                    // braces are not allowed
                    result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                    return(false);
                }
            }
            else
            {
                if ((flags & GuidStyles.RequireBraces) != 0)
                {
                    // braces are required
                    result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                    return(false);
                }
            }

            // Check for parenthesis
            bool parenthesisExistInString = (guidString.IndexOf('(', 0) >= 0);

            if (parenthesisExistInString)
            {
                if ((flags & (GuidStyles.AllowParenthesis | GuidStyles.RequireParenthesis)) == 0)
                {
                    // parenthesis are not allowed
                    result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                    return(false);
                }
            }
            else
            {
                if ((flags & GuidStyles.RequireParenthesis) != 0)
                {
                    // parenthesis are required
                    result.SetFailure(ParseFailureKind.Format, nameof(SR.Format_GuidUnrecognized));
                    return(false);
                }
            }

            try
            {
                // let's get on with the parsing
                if (dashesExistInString)
                {
                    // Check if it's of the form [{|(]dddddddd-dddd-dddd-dddd-dddddddddddd[}|)]
                    return(TryParseGuidWithDashes(guidString, ref result));
                }
                else if (bracesExistInString)
                {
                    // Check if it's of the form {0xdddddddd,0xdddd,0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd}}
                    return(TryParseGuidWithHexPrefix(guidString, ref result));
                }
                else
                {
                    // Check if it's of the form dddddddddddddddddddddddddddddddd
                    return(TryParseGuidWithNoStyle(guidString, ref result));
                }
            }
            catch (IndexOutOfRangeException ex)
            {
                result.SetFailure(ParseFailureKind.FormatWithInnerException, nameof(SR.Format_GuidUnrecognized), null, null, ex);
                return(false);
            }
            catch (ArgumentException ex)
            {
                result.SetFailure(ParseFailureKind.FormatWithInnerException, nameof(SR.Format_GuidUnrecognized), null, null, ex);
                return(false);
            }
        }
Пример #2
0
        private static bool TryParseGuid(string g, GuidStyles flags, ref GuidResult result)
        {
            if (g == null)
            {
                result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                return(false);
            }
            string guidString = g.Trim();

            if (guidString.Length == 0)
            {
                result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                return(false);
            }
            bool flag = guidString.IndexOf('-', 0) >= 0;

            if (flag)
            {
                if ((flags & (GuidStyles.DigitFormat | GuidStyles.AllowDashes)) == GuidStyles.None)
                {
                    result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                    return(false);
                }
            }
            else if ((flags & GuidStyles.DigitFormat) != GuidStyles.None)
            {
                result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                return(false);
            }
            bool flag2 = guidString.IndexOf('{', 0) >= 0;

            if (flag2)
            {
                if ((flags & (GuidStyles.RequireBraces | GuidStyles.AllowBraces)) == GuidStyles.None)
                {
                    result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                    return(false);
                }
            }
            else if ((flags & GuidStyles.RequireBraces) != GuidStyles.None)
            {
                result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                return(false);
            }
            if (guidString.IndexOf('(', 0) >= 0)
            {
                if ((flags & (GuidStyles.RequireParenthesis | GuidStyles.AllowParenthesis)) == GuidStyles.None)
                {
                    result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                    return(false);
                }
            }
            else if ((flags & GuidStyles.RequireParenthesis) != GuidStyles.None)
            {
                result.SetFailure(ParseFailureKind.Format, "Format_GuidUnrecognized");
                return(false);
            }
            try
            {
                if (flag)
                {
                    return(TryParseGuidWithDashes(guidString, ref result));
                }
                if (flag2)
                {
                    return(TryParseGuidWithHexPrefix(guidString, ref result));
                }
                return(TryParseGuidWithNoStyle(guidString, ref result));
            }
            catch (IndexOutOfRangeException exception)
            {
                result.SetFailure(ParseFailureKind.FormatWithInnerException, "Format_GuidUnrecognized", null, null, exception);
                return(false);
            }
            catch (ArgumentException exception2)
            {
                result.SetFailure(ParseFailureKind.FormatWithInnerException, "Format_GuidUnrecognized", null, null, exception2);
                return(false);
            }
        }