得到一个方法的调用者在c#(getting the caller of a method in c#

2019-07-05 16:50发布

有没有办法让那个叫一些方法类的实例?

Answer 1:

你可以通过检查调用堆栈调用该方法的名称 。 获取实例是一个不同的故事,并且不容易实现(如果甚至有可能;我从来没有努力去做到这一点)。 你应该例如考虑您的方法是从一个叫做可能性static方法,在这种情况下,没有类实例找到。

无论哪种方式,这通常不是做一件好事。 如果该方法需要访问任何类实例调用了进去,添加作为方法的参数。



Answer 2:

并不是的。 虽然你可以找到在堆栈上的一些信息,有几种情况下有没有实例,如托管,非托管代码的边界(Windows消息,回调,COM-互操作等),或者简单的静态方法为好。

也许你应该解释一下你想什么摆在首位实现,这样的替代解决方案都可以找到。



Answer 3:

您可以检查StackTrace.GetFrame方法。 :)



Answer 4:

那么如果你是在方法,您可以使用此行来获取类的类型。 但我不知道这是否真的是你想要的东西,因为你问的实例

Type yourclass = MethodBase.GetCurrentMethod().DeclaringType;


Answer 5:

如果可能的话,你可以尝试添加

object sender

参数如通常之间WPF方法,例如。



文章来源: getting the caller of a method in c#
标签: c# reflection