Ral*_*ton 12 .net c# reflection overriding methodinfo
我正在尝试确定我从类型实例上的GetMethod调用获得的MethodInfo对象是由类型还是由它的基类实现的.
例如:
Foo foo = new Foo();
MethodInfo methodInfo = foo.GetType().GetMethod("ToString",BindingFlags|Instance);
Run Code Online (Sandbox Code Playgroud)
ToString方法可以在Foo类中实现.我想知道我是否得到了foo实现?
相关问题
Meh*_*ari 20
检查其DeclaringType财产.
if (methodInfo.DeclaringType == typeof(Foo)) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
代替使用反射,更快的方法是使用委托!特别是在新版本的框架中,运行速度确实很快。
public delegate string ToStringDelegate();
public static bool OverridesToString(object instance)
{
if (instance != null)
{
ToStringDelegate func = instance.ToString;
return (func.Method.DeclaringType == instance.GetType());
}
return false;
}
Run Code Online (Sandbox Code Playgroud)