namespace InnovEnergy.Lib.Utils.Net; public class Ip4Address { public required String Host { get; init; } public required UInt16 Port { get; init; } public override String ToString() => $"{Host}:{Port}"; protected Boolean Equals(Ip4Address other) { return Host == other.Host && Port == other.Port; } public override Boolean Equals(Object? obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != GetType()) return false; return Equals((Ip4Address)obj); } public static Boolean operator ==(Ip4Address? left, Ip4Address? right) => Equals(left, right); public static Boolean operator !=(Ip4Address? left, Ip4Address? right) => !Equals(left, right); public override Int32 GetHashCode() => ToString().GetHashCode(); }