v10.10.2024.0701 使用IJsonHost改进Json序列化
大石头 编写于 2024-07-01 08:36:34 大石头 提交于 2024-07-01 08:48:33
X
using System.Collections.Generic;

namespace System.Collections;

public static class StructuralComparisons
{
	private sealed class ComparerImpl : IComparer, IEqualityComparer
	{
		int IComparer.Compare(object x, object y)
		{
			if (x is IStructuralComparable structuralComparable)
			{
				return structuralComparable.CompareTo(y, this);
			}
			return Comparer.Default.Compare(x, y);
		}

		int IEqualityComparer.GetHashCode(object obj)
		{
			if (obj is IEqualityComparer equalityComparer)
			{
				return equalityComparer.GetHashCode(this);
			}
			return EqualityComparer<object>.Default.GetHashCode(obj);
		}

		bool IEqualityComparer.Equals(object x, object y)
		{
			if (x is IEqualityComparer equalityComparer)
			{
				return equalityComparer.Equals(y, this);
			}
			return EqualityComparer<object>.Default.Equals(x, y);
		}
	}

	private static readonly ComparerImpl comparer = new ComparerImpl();

	public static IComparer StructuralComparer => comparer;

	public static IEqualityComparer StructuralEqualityComparer => comparer;
}