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
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 に答える
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 に答える