Csharp/C#教程:确定Equals()是否为覆盖?分享


确定Equals()是否为覆盖?

我有一个Type(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的inheritance层次结构中的任何位置被覆盖。 要确定是否在类型本身上声明了覆盖,可以将条件更改为

 equalsMethod.DeclaringType.Equals(type) 

编辑:清理IsObjectEqualsMethod方法。

如果枚举类型的所有方法都使用BindingFlags.DeclaredOnly,那么您将看不到刚刚inheritance但未被覆盖的方法。

上述就是C#学习教程:确定Equals()是否为覆盖?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1013653.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐