gpt4 book ai didi

c# - 确定 Equals() 是否是重写?

转载 作者:行者123 更新时间:2023-11-30 15:10:04 26 4
gpt4 key购买 nike

我有一个Type(类型)的实例。我如何确定它是否覆盖了 Equals()?

最佳答案

private static bool IsObjectEqualsMethod(MethodInfo m)
{
return m.Name == "Equals"
&& m.GetBaseDefinition().DeclaringType.Equals(typeof(object));
}

public static bool OverridesEqualsMethod(this Type type)
{
var equalsMethod = type.GetMethods()
.Single(IsObjectEqualsMethod);

return !equalsMethod.DeclaringType.Equals(typeof(object));
}

请注意,这表明 object.Equals 是否已在 type 的继承层次结构中任何地方被覆盖。要确定覆盖是否在类型本身上声明,您可以将条件更改为

equalsMethod.DeclaringType.Equals(type)

编辑:清理了 IsObjectEqualsMethod 方法。

关于c# - 确定 Equals() 是否是重写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3629605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com