您可以使用反射来找出当前方法正在执行的对象的类型吗

本文关键字:执行 对象 类型 方法 反射 可以使 | 更新日期: 2023-09-27 18:20:41

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

但是,MethodBaseDeclaringType属性将为我提供定义该方法的类型。

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

您可以使用反射来找出当前方法正在执行的对象的类型吗

如果您指的是对象本身的类型,那么只使用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实例调用的。