【发布时间】:2014-08-07 14:54:49
【问题描述】:
我希望从 lambda 表达式中获取方法名称,我知道可以这样做:
GetName(() => MethodA());
我的问题是,如果 MethodA 接受任何参数,您必须提供它们只是为了让编译器满意表达式(毕竟,它怎么知道您实际上并没有执行它?)
我希望能够做到:
GetName(() => MethodA);
有没有办法做到这一点?
注意:这不是重复的,这是处理 Method Group 而不是方法的实际“调用”。
【问题讨论】:
-
@Rawling 这不是重复的!该问题涉及对相关方法的调用。
-
确实,这不是重复的。我投票重新开放它,还剩 4 票,希望不会花太长时间。至于你的问题,恐怕答案是no。
-
@LucasTrzesniewski 恐怕它看起来好像不可能,这是一种耻辱。本质上,我使用它来确定一个方法是否在派生类中被覆盖 - 我知道这是一个坏主意,我这样做只是为了玩耍并快速将某些东西组合在一起以便稍后重做。
-
@Clint 我的错,this one 怎么样? (问题看起来很相似,不确定答案是否有帮助。)
-
您说“我正在寻找从 lambda 表达式中获取方法名称”,但接着说您不想指定一个有效的lambda,因此您似乎在说您希望能够编写:GetName(MethodA);我想我是在问“你怎么还不知道”(即,如果 MethodA 是一个方法组而不是一个代表,你怎么能“掌握”或传递一个,如果它是一个代表,你已经可以GetName(delegate)) - 我认为缺少一些信息。
标签: c# lambda expression-trees