使用 lambda 语法选择方法表达式,忽略重载
我目前使用以下扩展方法来选择方法:
public static MethodInfo GetMethod<TType>(this TType type,
Expression<Action<TType>> methodSelector)
where TType : class
{
return ((MethodCallExpression)methodSelector.Body).Method;
}
调用方式如下:
this.GetMethod(x => x.MyMethod(null,null))
选择哪种方法对我来说并不重要,我只是使用它来强获取方法名称- 键入的方式。有没有办法让我仍然可以使用 lambda 语法选择方法但不指定任何参数?
IE
this.GetMethod(x => x.MyMethod)
I currently use the following extension method in order to select a method:
public static MethodInfo GetMethod<TType>(this TType type,
Expression<Action<TType>> methodSelector)
where TType : class
{
return ((MethodCallExpression)methodSelector.Body).Method;
}
This is called like this:
this.GetMethod(x => x.MyMethod(null,null))
It doesn't matter to me which method I'm selecting, I'm simply using this as way to get the method name in a strongly-typed way. Is there a way that I can still select the method using the lambda syntax but not specify any arguments?
I.e.
this.GetMethod(x => x.MyMethod)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这似乎可行,但由于必须为采用参数的方法指定签名而增加了成本。我不知道如何自动获取这些。
用这个简单的例子进行测试:
This seems to work, but with the added cost of having to specify signatures for methods which take parameters. I couldn't work out how to get those automatically.
Tested with this simple example: