|
// 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;
}
}
}
|