• C#如何在运行时的方法中获取当前调用的方法的名称,所在类名,返回值类型等信息?
  • 发布于 2个月前
  • 451 热度
    4 评论
  • 海王星
  • 0 粉丝 19 篇博客
  •   
例如我有如下这样的一个类
namespace Com.ABC.Test
{
    class MyTestClass
    {
        public void MyTestMothed(string textStr) {
        }
    }
}
当创建一个MyTestClass类的实例,并且调用了MyTestMothed时,如何在MytestMothed方体内获取下列信息
1.当前正在调用的方法名
2.方法的参数列表和参数类型
3.返回值类型
4.方法所在类名
5.所在命名空间
用户评论
  • 水花兄弟
  • class Program
    {
        static void Main(string[] args)
        {
            int a = Add(1, 8);
            Console.ReadLine();
        }
        public static int Add(int x, int y)
        {
            var method =(MethodInfo)MethodBase.GetCurrentMethod();
            Console.WriteLine(method.Name);
            Console.WriteLine(method.Module);
            Console.WriteLine(method.DeclaringType);
            Console.WriteLine(method.DeclaringType.Namespace);
            Console.WriteLine(method.ReturnType);           
            foreach (var p in method.GetParameters ())
            {
                Console.WriteLine($"{p.GetType()} {p.Name}");
            }
            return x + y;
        }
    }
  • 2018/3/19 13:28:00 [ 1 ] [ 0 ] 回复
  • 逗比的兔子
  • 赵睿  2018-03-19 13:24
    试下
    StackTrace stackTrace = new StackTrace();           // get call stack
    StackFrame[] stackFrames = stackTrace.GetFrames();  // get method calls (frames)
    // write call stack method names
      foreach (StackFrame stackFrame in stackFrames)
      {
        Console.WriteLine(stackFrame.GetMethod().Name);   // write method name
      }


    你这个方法是没办法找到当前调用方法的所在类和命名空间的

  • 2018/3/19 13:26:00 [ 0 ] [ 0 ] 回复
  • 赵睿
  • 试下
    StackTrace stackTrace = new StackTrace();           // get call stack
    StackFrame[] stackFrames = stackTrace.GetFrames();  // get method calls (frames)
    // write call stack method names
      foreach (StackFrame stackFrame in stackFrames)
      {
        Console.WriteLine(stackFrame.GetMethod().Name);   // write method name
      }


  • 2018/3/19 13:24:00 [ 0 ] [ 0 ] 回复