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
的类型还是调用该方法的引用的类型?