X类使用反射方法来检查Y类是否具有特定方法。类Y是否有办法找出类X正在检查的方法的详细信息?

最佳答案

反射是在类型定义而不是实例上执行的。

如果需要,该实例用于检索值,并且仅是值的存储位置,类型定义是此存储区的映射。

因此,不可能指示是否在实例上使用了反射……可以确定是否最近对某个类型执行了反射(在最后一次垃圾收集器运行之前,请考虑反射反射),但是切线最好不要在此进行了进一步探讨,因为它仍然无法解决您要解决的问题。

当CLR执行反射时,它这样做的方式不会留下任何已经执行反射的痕迹,从而节省了与执行反射相关的存储成本。

如果不修改CLR,就不可能留下任何此类指示。

解决此问题的另一种方法是提供一个反射缓存,该反射缓存将类型信息存储在Dictionary中,这将使您确定是否已反映特定类型,然后在Dictionary中使用该信息,而不是再次执行反射。

How do I intercept a method call in C#?

关于c# - 一个类(class)有可能学习自己是否已经使用了反射?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15341092/

10-12 12:20
查看更多