/// <summary>Parses a protocol string in the stringified proxy format into a Protocol.</summary> /// <param name="str">The string to parse.</param> /// <returns>The parsed protocol, or throws an exception if the string cannot be parsed.</returns> internal static Protocol Parse(string str) { switch (str) { case "ice1": return(Protocol.Ice1); case "ice2": return(Protocol.Ice2); default: // Parse as a Major.Minor encoding: if (Encoding.TryParse(str, out Encoding encoding) && encoding.Minor == 0) { return((Protocol)encoding.Major); } byte value = byte.Parse(str, CultureInfo.InvariantCulture); return((Protocol)value); } }