这很可能是一件简单的事情,但到目前为止,我还没有提出任何关于如何做到这一点的事情。
我希望能够以两种不同的方式获取方法的名称。请注意我需要方法名称,而不是属性名称。
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);
我怎么能这样做呢?
谢谢!
答案 0 :(得分:1)
您不需要lambdas(x => x.MethodA
等)。这只会让问题变得混乱(并隐藏感兴趣的方法:MethodA
位将隐藏在GetMethodName
方法中。
相反,您可以使用反射来获取MethodInfo
对象,然后该对象具有Name
属性。
例如:
MethodInfo sm = typeof(SomeClass).GetMethod("SomeMethod");
string methodName = sm.Name;
此处methodName
将是字符串"SomeMethod"
。 (当然,在这个简单的例子中,我们使用了类名来获取MethodInfo
对象,所以它有些循环,我们也可能只使用了硬编码的"SomeMethod"
字符串!)