| File: CSharp\AssemblyIdentityEqualityComparer.cs | Web Access |
| Project: src\roslyn\src\Razor\src\Compiler\Microsoft.CodeAnalysis.Razor.Compiler\src\Microsoft.CodeAnalysis.Razor.Compiler.csproj (Microsoft.CodeAnalysis.Razor.Compiler) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable disable using System; using System.Collections.Generic; using Microsoft.Extensions.Internal; namespace Microsoft.CodeAnalysis.Razor; internal abstract class AssemblyIdentityEqualityComparer : IEqualityComparer<AssemblyIdentity> { public static readonly AssemblyIdentityEqualityComparer NameAndVersion = new NameAndVersionEqualityComparer(); public abstract bool Equals(AssemblyIdentity x, AssemblyIdentity y); public abstract int GetHashCode(AssemblyIdentity obj); private class NameAndVersionEqualityComparer : AssemblyIdentityEqualityComparer { public override bool Equals(AssemblyIdentity x, AssemblyIdentity y) { if (object.ReferenceEquals(x, y)) { return true; } else if (x == null ^ y == null) { return false; } else { return string.Equals(x.Name, y.Name, StringComparison.OrdinalIgnoreCase) && object.Equals(x.Version, y.Version); } } public override int GetHashCode(AssemblyIdentity obj) { if (obj == null) { return 0; } var hash = HashCodeCombiner.Start(); hash.Add(obj.Name, StringComparer.OrdinalIgnoreCase); hash.Add(obj.Version); return hash; } } }