public static Connection Parse(string value) { if (value == null) { throw new ArgumentNullException("value"); } string[] parts = value.Split(' '); if (parts.Length != 3) { throw new FormatException("Value do not contain 3 parts as needed."); } if (parts[0] != "IN") { throw new NotSupportedException(string.Format(CultureInfo.InvariantCulture, "Net type {0} not suported", parts[0])); } switch (parts[1]) { case "IP4": return(ConnectionIP4.Parse(parts[2])); case "IP6": return(ConnectionIP6.Parse(parts[2])); default: throw new NotSupportedException(string.Format(CultureInfo.InvariantCulture, "Address type {0} not suported", parts[1])); } }
internal new static ConnectionIP6 Parse(string ipAddress) { string[] parts = ipAddress.Split('/'); if (parts.Length > 2) { throw new FormatException("Too much address subpart in " + ipAddress); } ConnectionIP6 result = new ConnectionIP6(); result.Host = parts[0]; int numberOfAddress; if (parts.Length > 1) { if (!int.TryParse(parts[1], NumberStyles.Integer, CultureInfo.InvariantCulture, out numberOfAddress)) { throw new FormatException("Invalid number of address : " + parts[1]); } result.NumberOfAddress = numberOfAddress; } return(result); }