diff --git a/TechnitiumLibrary.Net/ExtendedNetworkAddress.cs b/TechnitiumLibrary.Net/ExtendedNetworkAddress.cs new file mode 100644 index 0000000..8deb44b --- /dev/null +++ b/TechnitiumLibrary.Net/ExtendedNetworkAddress.cs @@ -0,0 +1,50 @@ + +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using TechnitiumLibrary.IO; + +namespace TechnitiumLibrary.Net +{ + public class ExtendedNetworkAddress : NetworkAddress + { + readonly string _domainName; + + #region constructor + public ExtendedNetworkAddress(IPAddress address, byte prefixLength, string domainName) + : base(address, prefixLength) + { + _domainName = domainName; + } + public ExtendedNetworkAddress(NetworkAddress networkAddress, string domainName) + : base(networkAddress.Address, networkAddress.PrefixLength) + { + _domainName = domainName; + } + #endregion + + public override bool Equals(object obj) + { + if (obj is ExtendedNetworkAddress other) + { + return base.Equals(other) && string.Equals(DomainName, other.DomainName, StringComparison.OrdinalIgnoreCase); + } + return false; + } + + public override int GetHashCode() + { + return HashCode.Combine(base.GetHashCode(), DomainName?.ToLowerInvariant()); + } + + #region properties + + public string DomainName + { + get { return _domainName; } + } + + #endregion + } +}