| File: GraphModel\GraphItem.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.DependencyResolver.Core\NuGet.DependencyResolver.Core.csproj (NuGet.DependencyResolver.Core) |
// 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. #nullable disable using System; using System.Diagnostics; using NuGet.LibraryModel; using NuGet.Shared; namespace NuGet.DependencyResolver { [DebuggerDisplay("{Key}")] public class GraphItem<TItem> : IEquatable<GraphItem<TItem>> { public GraphItem(LibraryIdentity key) { Key = key; } public LibraryIdentity Key { get; set; } public TItem Data { get; set; } /// <summary> /// If set it will indicate that the graph node was created due to a transitive dependency for a package that was also defined in the central packages management file. /// </summary> public bool IsCentralTransitive { get; set; } public override bool Equals(object obj) { return Equals(obj as GraphItem<TItem>); } public bool Equals(GraphItem<TItem> other) { return other != null && KeyCompare(other) && IsCentralTransitive == other.IsCentralTransitive; } public override int GetHashCode() { var combiner = new HashCodeCombiner(); combiner.AddObject(Key); combiner.AddObject(IsCentralTransitive); return combiner.CombinedHash; } private bool KeyCompare(GraphItem<TItem> other) { if (Key == null) { return other.Key == null; } return Key.Equals(other.Key); } } }