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



我知道如何获得当前方法(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实例调用的。

相关内容

  • 没有找到相关文章

最新更新