C#使用反射来获取方法名称

时间:2012-10-14 03:38:34

标签: c#-4.0 dynamic reflection methods

  

可能重复:
  get methodinfo from a method reference C#

这很可能是一件简单的事情,但到目前为止,我还没有提出任何关于如何做到这一点的事情。

我希望能够以两种不同的方式获取方法的名称。请注意我需要方法名称,而不是属性名称。

1)在像ClassA<T>这样的类中,看起来像:

var name = GetMethodName(x => x.MethodA);

2)课外,看起来像:

var name = GetMethodName<ClassA<object>>(x => x.MethodA);
var name = GetMethodName<ClassB>(x => x.MethodB);

我怎么能这样做呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

您不需要lambdas(x => x.MethodA等)。这只会让问题变得混乱(并隐藏感兴趣的方法:MethodA位将隐藏在GetMethodName方法中。

相反,您可以使用反射来获取MethodInfo对象,然后该对象具有Name属性。

例如:

MethodInfo sm = typeof(SomeClass).GetMethod("SomeMethod");
string methodName = sm.Name;

此处methodName将是字符串"SomeMethod"。 (当然,在这个简单的例子中,我们使用了类名来获取MethodInfo对象,所以它有些循环,我们也可能只使用了硬编码的"SomeMethod"字符串!)

相关问题