| File: DownloadDependency.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.LibraryModel\NuGet.LibraryModel.csproj (NuGet.LibraryModel) |
// Copyright(c) .NET Foundation.All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Text; using NuGet.Shared; using NuGet.Versioning; namespace NuGet.LibraryModel { /// <remarks> /// Immutable. /// </remarks> public sealed class DownloadDependency : IEquatable<DownloadDependency>, IComparable<DownloadDependency> { public string Name { get; } public VersionRange VersionRange { get; } public DownloadDependency( string name, VersionRange versionRange) { Name = name; VersionRange = versionRange; } public static implicit operator LibraryRange(DownloadDependency library) { return new LibraryRange { Name = library.Name, TypeConstraint = LibraryDependencyTarget.Package, VersionRange = library.VersionRange }; } public int CompareTo(DownloadDependency? other) { if (other == null) return 1; var compare = string.Compare(Name, other.Name, StringComparison.OrdinalIgnoreCase); if (compare == 0) { if (VersionRange == null && other.VersionRange == null) { // NOOP; } else if (VersionRange == null) { compare = -1; } else if (other.VersionRange == null) { compare = 1; } else { compare = VersionRange.GetHashCode().CompareTo(other.VersionRange.GetHashCode()); } } return compare; } public override string ToString() { var sb = new StringBuilder(); sb.Append(Name); sb.Append(" "); sb.Append(VersionRange); return sb.ToString(); } public override int GetHashCode() { var hashCode = new HashCodeCombiner(); hashCode.AddObject(Name.ToLowerInvariant()); hashCode.AddObject(VersionRange); return hashCode.CombinedHash; } public override bool Equals(object? obj) { return Equals(obj as DownloadDependency); } public bool Equals(DownloadDependency? other) { if (other == null) { return false; } if (ReferenceEquals(this, other)) { return true; } return Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase) && EqualityUtility.EqualsWithNullCheck(VersionRange, other.VersionRange); } } }