using System; using System.Globalization; namespace Questionable.Model.Gathering; public class GatheringPointId : IComparable<GatheringPointId>, IEquatable<GatheringPointId> { public GatheringPointId(ushort value) { Value = value; } public ushort Value { get; } public int CompareTo(GatheringPointId? other) { if (ReferenceEquals(this, other)) return 0; if (ReferenceEquals(null, other)) return 1; return Value.CompareTo(other.Value); } public bool Equals(GatheringPointId? other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return Value == other.Value; } public override bool Equals(object? obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != this.GetType()) return false; return Equals((GatheringPointId)obj); } public override int GetHashCode() { return Value.GetHashCode(); } public static bool operator ==(GatheringPointId? left, GatheringPointId? right) { return Equals(left, right); } public static bool operator !=(GatheringPointId? left, GatheringPointId? right) { return !Equals(left, right); } public static GatheringPointId FromString(string value) { return new GatheringPointId(ushort.Parse(value, CultureInfo.InvariantCulture)); } }