in src/Elastic.Transport/Extensions/SemVersion.cs [179:213]
public SemVersion Update(int? major = null, int? minor = null, int? patch = null, string? prerelease = null, string? metadata = null) =>
new(major ?? Major,
minor ?? Minor,
patch ?? Patch,
prerelease ?? Prerelease,
metadata ?? Metadata);
/// <summary>
/// Compares the current version to another version in a natural way (by component/part precedence).
/// </summary>
/// <param name="other">The <see cref="SemVersion"/> to compare to.</param>
/// <returns><c>0</c> if both versions are equal, a positive number, if the other version is lower or a negative number if the other version is higher.</returns>
public int CompareByPrecedence(SemVersion? other)
{
if (ReferenceEquals(other, null))
return 1;
var result = Major.CompareTo(other.Major);
if (result != 0)
return result;
result = Minor.CompareTo(other.Minor);
if (result != 0)
return result;
result = Patch.CompareTo(other.Patch);
if (result != 0)
return result;
result = CompareComponent(Prerelease, other.Prerelease, true);
if (result != 0)
return result;
return CompareComponent(Prerelease, other.Metadata, true);
}