新增了一个通用的IEqualityComparer<T>实现

This commit is contained in:
falcon 2023-03-08 15:56:59 +08:00
parent c574f2241e
commit 404e1085a7

View File

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
namespace Falcon.SugarApi
{
/// <summary>
/// 通用Object比较接口
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
public class ObjectComparer<T>:IEqualityComparer<T> where T : class
{
/// <summary>
/// 比较两个对象是否相等
/// </summary>
/// <param name="x">对象1</param>
/// <param name="y">对象2</param>
/// <returns>True相等False不相等</returns>
public virtual bool Equals(T? x,T? y) {
if(x == null && y == null) {
return true;
}
if(x == null || y == null) {
return false;
}
foreach(var p in typeof(T).GetProperties()) {
if(p.CanRead) {
var v1 = p.GetValue(x);
var v2 = p.GetValue(y);
if(v1!=v2) {
return false;
}
}
}
return true;
}
/// <summary>
/// 获取对象HashCode
/// </summary>
/// <param name="obj">要获取的对象</param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public int GetHashCode([DisallowNull] T obj) {
throw new NotImplementedException();
}
}
}