C#中有什么方法可以将随机方法作为参数传递?

解释我的问题:

我想编写一个简单的Logger-Tool,它使用类和方法名称报告传递的参数的方法的进入和离开:

我针对的日志文件是:

ENTERING: ClassOfDoom::MethodOfDoom( arg1={1} [int], arg2={true} [bool] )
LEAVING: ClassOfDoom::MethodOfDoom RETURNING 1 [int]


我想到的代码:

class ClassOfDoom {
  // Remeber: MethodOfDoom is a _random_ method with _random_ arguments
  public int MethodOfDoom(int arg1, bool arg2) {
    Log.Entering(this, this.MethodOfDoom, arg1, arg2);
    ...
    return Log.Returing(this, this.MethodOfDoom, 1);
  }
}


有没有办法做到这一点?还是C#不够灵活?

提前致谢!

最佳答案

您可以使您的日志记录函数接受MethodBase参数,并使用MethodBase.GetCurrentMethod将当前方法信息作为参数传递。

然后,在记录器中,可以检查其属性NameDeclaringType以获取方法信息。另外,通过在日志记录函数中声明params object[] args参数,可以轻松传递参数:

public static void Entering(object obj, MethodBase methodInfo,
                            params object[] args) {
    Console.WriteLine("ENTERING {0}:{1}", methodInfo.DeclaringType.Name,
                                          methodInfo.Name);
    ...
}

关于c# - 通过随机方法作为参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1136641/

10-17 02:48