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