解决MySql布尔型新旧版本兼容问题,采用枚举来表示布尔型的数据表。由正向工程赋值
大石头 authored at 2018-05-15 21:21:05
1.02 KiB
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;
}