在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#不是那么灵活吗?
提前致谢!
您可以使您的日志记录函数接受一个MethodBase参数,并使用MethodBase.GetCurrentMethod将当前方法信息作为参数传递.
然后,在记录器中,您可以检查其属性Name并DeclaringType获取方法信息.此外,通过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)
| 归档时间: |
|
| 查看次数: |
1254 次 |
| 最近记录: |