我需要运行特定代码片段,以确定特定类型是否覆盖Object.Equals
。
如何检查类型是否会覆盖此方法?
在VS中输入typeof(mytype).GetMethod("Equals").
为我提供了一系列选项,但没有“IsOverriden”或类似内容。
答案 0 :(得分:1)
检查DeclaringType
是否为typeof(object)
。
答案 1 :(得分:1)
有两种方法,首先MethodInfo
类有一个DeclaringType
,您可以使用它来查看它是否为System.Object
。其次,您可以使用接受GetMethod
枚举的BindingFlags
重载,并传入DeclaredOnly
以确保您不会获得任何父对象。
答案 2 :(得分:0)
您可以使用绑定标志:
var t = typeof(mytype).GetMethod(
"Equals",
BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly
);
当且仅当t
覆盖null
时,mytype
才会Equals
。