你能用反射来找出当前方法正在执行的对象的类型吗?

时间:2012-01-16 23:08:32

标签: c# reflection

我知道如何获取当前方法(MethodBase.GetCurrentMethod())。

但是,DeclaringType的{​​{1}}属性将为我提供定义方法的类型。

我对在运行时实际调用它的方法的类型感兴趣。

1 个答案:

答案 0 :(得分:6)

如果您指的是对象本身的类型,那么只需使用this.GetType()?这将为您提供当前方法正在执行的this类型。

如果您指的是执行该方法的引用类型,那么实际上无法确定。以虚拟方法为例。

abstract class Animal {
  public abstract void MakeNoise();
}
abstract class Dog : Animal { }
class Labrador : Dog {
  public override void MakeNoise() {
    ...
  }
}

引用类型可以是Animal,但如果对象是Labrador,那么将调用MakeNoise方法的那个版本。他们无法使用MakeNoise方法知道它是从AnimalDog还是Labrador实例调用的。