有没有办法通过提供方法本身来获取方法的名称(作为字符串)?
class Person
{
bool Eat(Food food){...}
}
我想以某种方式获得字符串“吃”。就这样!这可以来自实例,也可以来自使用反射的类声明。
我的尝试:
public delegate bool EatDelegate(Food f);
EatDelegate eatDel = new EatDelegate(_person1.Eat);
string methodName = eatDel.GetInvocationList()[0].Method.Name;
这需要知道方法的委托,整个事情是不可读的
我想要methodName以便动态调用它。
注意:
MethodBase.GetCurrentMethod()
)答案 0 :(得分:5)
public string GetName(Expression<Action> exp)
{
var mce = exp.Body as MethodCallExpression;
return mce.Method.Name;
}
-
方法
public int MyMethod(int i)
{
return 0;
}
和用法
var s= GetName(()=>this.MyMethod(0));
答案 1 :(得分:0)
var methods = typeof(Person).GetMethods();
foreach (var method in methods)
{
if (method.Name.Equals("Eat"))
{
// do something here...
}
}