public KnxNetIpConnectionString(string connectionString) : this() { try { var str = connectionString.Trim('{', '}'); var kvpairs = str.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var kv in kvpairs) { if (kv.Contains("InternalUrl")) { InternalAddress = kv.Split('=')[1]; } if (kv.Contains("ExternalUrl")) { ExternalAddress = kv.Split('=')[1]; } if (kv.Contains("InternalProtocol")) { Enum.TryParse(kv.Split('=')[1], true, out _internalProtocol); } if (kv.Contains("ExternalProtocol")) { Enum.TryParse(kv.Split('=')[1], true, out _externalProtocol); } if (kv.Contains("InternalConnectionReleaseDelay")) { Enum.TryParse(kv.Split('=')[1], true, out _internalConnectionReleaseDelay); } if (kv.Contains("ExternalConnectionReleaseDelay")) { Enum.TryParse(kv.Split('=')[1], true, out _externalConnectionReleaseDelay); } if (kv.Contains("InternalMulticastUrl")) { InternalMulticastUrl = kv.Split('=')[1]; } if (kv.Contains("DeviceAddress")) { var da = KnxAddress.ParseDevice(kv.Split('=')[1]); DeviceMain = da.Area; DeviceMiddle = da.Line; DeviceSub = da.Device; } } } catch (Exception exception) { throw new ArgumentException("ConnectionString is not formated correctly.", exception); } }