5

我有一个函数,它需要一个函数指针

喜欢

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

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

我知道你可以得到当前正在运行的函数的函数名,但是你如何得到你要调用的函数的名字呢?

如果之前可能已经发布过这样的问题,请原谅我,我在 C# 中找不到解决方案

4

3 回答 3

7

您可以使用MemberInfo.Name 属性

string functionname = functionpointer.Method.Name;
于 2012-11-28T07:03:44.543 回答
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());

                    }
                 }
于 2012-11-28T07:11:34.673 回答
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;
    }
}
于 2012-11-28T07:07:48.657 回答