lan*_*nce 3 c# testing reflection overriding 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));
}
Run Code Online (Sandbox Code Playgroud)
请注意,这表明是否object.Equals
已在继承层次结构中的任何位置重写type
.要确定是否在类型本身上声明了覆盖,可以将条件更改为
equalsMethod.DeclaringType.Equals(type)
Run Code Online (Sandbox Code Playgroud)
编辑:清理IsObjectEqualsMethod
方法.
归档时间: |
|
查看次数: |
500 次 |
最近记录: |