从 linq 表达式中提取方法名称
如何获取从 C# 表达式调用的第一个方法的名称?就像下面虚构的 MethodUtils.NameFromExpression() 一样:
Expression<Action<string>> expr = s => s.Trim();
Assert.AreEqual("Trim", MethodUtils.NameFromExpression(expr));
理想情况下,任何 util 方法都将以这样的方式编写/重载:它可以采用任何 Action 或 Func 委托类型的表达式。
提前致谢。
更新
我找到了一个答案(如下),但仍然希望了解这是否是一个好的解决方案,或者 BCL 中是否已经存在执行此操作的方法。
How can I get the name of the first method called from an expression in C#? Something like the fictional MethodUtils.NameFromExpression() below:
Expression<Action<string>> expr = s => s.Trim();
Assert.AreEqual("Trim", MethodUtils.NameFromExpression(expr));
Ideally any util method would be written/overloaded in such a way that it could take expressions for any of the Action or Func delegate types.
Thanks in advance.
UPDATE
I found an answer (below) but would still like input as to whether this is a good solution or whether there already exists a way of doing this in the BCL.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用调试器进行了一些挖掘,我已经回答了我自己的问题:
对此实现有任何评论吗?
A bit of digging with the debugger and I've answered my own question:
Any comments on this implementation?