我知道如何获取当前方法(MethodBase.GetCurrentMethod()
)。
但是,DeclaringType
的{{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
方法知道它是从Animal
,Dog
还是Labrador
实例调用的。