可能的重复项:
确定 Equals(( 是否是覆盖?
我需要运行特定的代码片段,以确定特定类型是否覆盖Object.Equals
。
如何检查类型是否覆盖此方法?
在VS中输入typeof(mytype).GetMethod("Equals").
给我带来了广泛的选项列表,但没有"IsOverriden"或类似的东西。
检查DeclaringType
是否typeof(object)
。
方法,首先MethodInfo
类有一个DeclaringType
,您可以使用它来查看它是否System.Object
。其次,您可以使用接受BindingFlags
枚举并传入DeclaredOnly
的GetMethod
重载,以确保不会获得任何父对象。
您可以使用绑定标志来发挥自己的优势:
var t = typeof(mytype).GetMethod(
"Equals",
BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly
);
那么t
当且仅当mytype
覆盖Equals
时,就不会null
。