/// <summary> /// Creates a new implementation version from a a string. /// </summary> /// <param name="value">The string containing the version information.</param> /// <exception cref="FormatException"><paramref name="value"/> is not a valid version string.</exception> public ImplementationVersion(string value) { if (string.IsNullOrEmpty(value)) { throw new FormatException(Resources.MustStartWithDottedList); } if (ModelUtils.ContainsTemplateVariables(value)) { _verbatimString = value; return; } var parts = value.Split('-'); // Ensure the first part is a dotted list if (!VersionDottedList.IsValid(parts[0])) { throw new FormatException(Resources.MustStartWithDottedList); } FirstPart = new VersionDottedList(parts[0]); // Iterate through all additional parts var additionalParts = new VersionPart[parts.Length - 1]; for (int i = 1; i < parts.Length; i++) { additionalParts[i - 1] = new VersionPart(parts[i]); } AdditionalParts = additionalParts; }
/// <summary> /// Creates a new implementation version from a .NET <see cref="Version"/>. /// </summary> /// <param name="version">The .NET <see cref="Version"/> to convert.</param> public ImplementationVersion(Version version) { #region Sanity checks if (version == null) { throw new ArgumentNullException(nameof(version)); } #endregion FirstPart = new VersionDottedList(version.ToString()); }
/// <summary> /// Creates a new version part. /// </summary> /// <param name="modifier">The optional modifier prefix.</param> /// <param name="dottedList">The dotted list part.</param> public VersionPart(VersionModifier modifier = VersionModifier.None, VersionDottedList dottedList = default) { Modifier = modifier; DottedList = dottedList; }
/// <summary> /// Creates a new implementation version. /// </summary> /// <param name="firstPart">The first part of the version number.</param> /// <param name="additionalParts">All additional parts of the version number.</param> public ImplementationVersion(VersionDottedList firstPart, params VersionPart[] additionalParts) { FirstPart = firstPart; AdditionalParts = additionalParts ?? throw new ArgumentNullException(nameof(additionalParts)); }