作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个 IEqualityComparer<Type>
当且仅当两个泛型类型相同且忽略泛型参数时返回 true。所以comparer.Equals(typeof(List<A>), typeof(List<B>))
应该返回 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();
}
}
存在一些误报案例(命名空间问题等)。我不知道还能做什么。
最佳答案
这是一个考虑了通用性的检查。如果 x 或 y 为空,它会抛出 NRE,所以如果您想要更强大的检查,也可以添加空检查。
public bool Equals(Type x, Type y)
{
var a = x.IsGenericType ? x.GetGenericTypeDefinition() : x;
var b = y.IsGenericType ? y.GetGenericTypeDefinition() : y;
return a == b;
}
关于c# - 如何为泛型类型制作 IEqualityComparer<Type>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42166111/
我是一名优秀的程序员,十分优秀!