/// <summary> /// Compares <see langword="this"/> to the <see cref="Version"/> in <paramref name="other"/> using <see cref="Version.CompareTo(Version)"/>. /// </summary> /// <remarks> /// The storage method of <see langword="this"/> must be <see cref="StoredAs.SemVer"/>, else an <see cref="InvalidOperationException"/> will /// be thrown. /// </remarks> /// <param name="other">the <see cref="Version"/> to compare to</param> /// <returns>less than 0 if <paramref name="other"/> is considered bigger than <see langword="this"/>, 0 if equal, and greater than zero if smaller</returns> /// <seealso cref="CompareTo(AlmostVersion)"/> public int CompareTo(Version other) { if (StorageMode != StoredAs.SemVer) throw new InvalidOperationException("Cannot compare a SemVer version with an AlmostVersion stored as a string!"); return SemverValue.CompareTo(other); }
/// <summary> /// Compares <see langword="this"/> to the <see cref="AlmostVersion"/> in <paramref name="other"/> using <see cref="Version.CompareTo(Version)"/> /// or <see cref="string.CompareTo(string)"/>, depending on the current store. /// </summary> /// <remarks> /// The storage methods of the two objects must be the same, or this will throw an <see cref="InvalidOperationException"/>. /// </remarks> /// <param name="other">the <see cref="AlmostVersion"/> to compare to</param> /// <returns>less than 0 if <paramref name="other"/> is considered bigger than <see langword="this"/>, 0 if equal, and greater than zero if smaller</returns> /// <seealso cref="CompareTo(Version)"/> public int CompareTo(AlmostVersion other) { if (other == null) return -1; if (StorageMode != other.StorageMode) throw new InvalidOperationException("Cannot compare AlmostVersions with different stores!"); if (StorageMode == StoredAs.SemVer) return SemverValue.CompareTo(other.SemverValue); else return StringValue.CompareTo(other.StringValue); }
// can I just <inheritdoc /> this? /// <summary> /// Gets a string representation of the current version. If the value is stored as a string, this returns it. If it is /// stored as a <see cref="Version"/>, it is equivalent to calling <see cref="Version.ToString"/>. /// </summary> /// <returns>a string representation of the current version</returns> /// <seealso cref="object.ToString"/> public override string ToString() => StorageMode == StoredAs.SemVer ? SemverValue.ToString() : StringValue;