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

C# 您可以使用反射来找出当前方法正在执行的对象的类型吗?,c#,reflection,C#,Reflection,我知道如何获取当前方法(MethodBase.GetCurrentMethod()) 但是,MethodBase的DeclaringType属性将为我提供定义方法的类型 我对在运行时实际调用它的方法的类型感兴趣。如果您指的是对象本身的类型,那么只需使用this.GetType()?这将为您提供当前方法正在执行的this类型 如果您指的是执行该方法的引用的类型,那么这实际上是不可能确定的。考虑虚拟方法作为一个例子。 abstract class Animal { public abstract

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

但是,
MethodBase
DeclaringType
属性将为我提供定义方法的类型


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

如果您指的是对象本身的类型,那么只需使用
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
方法知道它是否是从
Animal
Dog
Labrador
实例调用的

您是指
this
的类型还是调用该方法的引用的类型?