C# 如何使iQualityComparer<;类型>;对于泛型类型
我需要一个C# 如何使iQualityComparer<;类型>;对于泛型类型,c#,generics,types,iequalitycomparer,C#,Generics,Types,Iequalitycomparer,我需要一个IEqualityComparer,当且仅当两个泛型类型相同时才返回true,忽略泛型参数。所以comparer.Equals(typeof(List),typeof(List))应该返回true 我正在通过Name进行比较: public class GenericTypeEqualityComparer : IEqualityComparer<Type> { public bool Equals(Type x, Type y) { ret
IEqualityComparer
,当且仅当两个泛型类型相同时才返回true,忽略泛型参数。所以comparer.Equals(typeof(List),typeof(List))
应该返回true
我正在通过Name
进行比较:
public class GenericTypeEqualityComparer : IEqualityComparer<Type>
{
public bool Equals(Type x, Type y)
{
return x.Name == y.Name;
}
public int GetHashCode(Type obj)
{
return obj.Name.GetHashCode();
}
}
公共类GenericTypeEqualityComparer:IEqualityComparer
{
公共布尔等于(x型,y型)
{
返回x.Name==y.Name;
}
public int GetHashCode(类型obj)
{
返回obj.Name.GetHashCode();
}
}
存在一些误报情况(名称空间问题等)。我不知道还能做什么。这是一个考虑到通用性的检查。如果x或y为null,它将抛出一个NRE,所以如果您想要更健壮的检查,也可以添加一个null检查
public bool Equals(Type x, Type y)
{
var a = x.IsGenericType ? x.GetGenericTypeDefinition() : x;
var b = y.IsGenericType ? y.GetGenericTypeDefinition() : y;
return a == b;
}
谢谢正是我想要的。