传递随机方法作为参数?

Chr*_*lka 2 c#

C#中有任何方法可以将随机方法作为参数传递吗?

解释我的问题:

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

我的目标是:

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

我想到的代码:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?或者C#不是那么灵活吗?

提前致谢!

Meh*_*ari 5

您可以使您的日志记录函数接受一个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);
    ...
}
Run Code Online (Sandbox Code Playgroud)