确定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