如何从C#中的函数指针获取函数名?

时间:2012-11-28 07:01:23

标签: c# reflection function-pointers

我有一个带函数指针的函数

public void myfunc<a,b>(Func<a,b> functionpointer)
{
  String functionname;
  // Do some magic to get functionpointers name and set it to functionname
 }

是否可以在不运行函数的情况下获取函数的名称?

我知道您可以获取当前正在运行的函数的函数名称,但是如何获取要调用的函数的名称?

请原谅我,如果以前发过这样的问题,我无法在C#找到解决方案

3 个答案:

答案 0 :(得分:7)

您可以使用MemberInfo.Name Property

string functionname = functionpointer.Method.Name;

答案 1 :(得分:0)

public void myfunc<a, b>(Expression<Func<a, b>> expr)
{
    Func<a, b> functionpointer = expr.Compile();

    String functionname = "";
    var mce = expr.Body as MethodCallExpression;
    if(mce!=null)
    {
        functionname = mce.Method.Name;
    }
}

答案 2 :(得分:0)

使用反思

 foreach (Type objType in assembly.GetTypes())
                {
                    //List<string> listInner = new List<string>();
                    var listInner = new HashSet<string>();
                    listInner.Add(objType.FullName);
                    foreach (MemberInfo obMember in objType.GetMembers())
                    {
                        listInner.Add(obMember.MemberType + " " + obMember.ToString());

                    }
                 }