我是C#的新手,并且正在寻找执行以下实现的最佳方法.
我的项目有几个Model类(比如25),每个类都有一个名为"process()"的静态方法,只需要一点时间来完成它的任务.
我需要一个接一个地调用每个类中的所有这些方法,并添加一些日志(将方法执行的写入状态写入文件)以跟踪执行.
我可以简单地做以下事情,但肯定应该有更好的专业方式来做到这一点
Log.WriteLog(DateTime.Now + " Class A Process Started");
ClassA.Process()
Log.WriteLog(DateTime.Now + " Class A Process Finished");
Log.WriteLog(DateTime.Now + " Class B Process Started");
ClassB.Process()
Log.WriteLog(DateTime.Now + " Class B Process Finished");
............ continue 25 classes
Run Code Online (Sandbox Code Playgroud)
我想要做的是编写一个方法,然后在那里添加日志和重复性工作.
private void CommonMethod(Class)
{
   Check what class
   Add Process started Log
   Call Process method
   Add proicess finished Log
}
Run Code Online (Sandbox Code Playgroud)
    您可以创建接受委托并执行日志记录的函数,如下所示:
public void ProcessAndLog(Action action, String processName)
{
  Log.WriteLog(DateTime.Now + $" Class {processName} Process Started");
  action();
  Log.WriteLog(DateTime.Now + $" Class {processName} Process Finished");
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
ProcessAndLog(ClassA.Process, "A"); //"A" could be part of ClassA - e.g. ClassA.Name;
ProcessAndLog(ClassB.Process, "B");
//etc
Run Code Online (Sandbox Code Playgroud)
只要每个Process方法都没有参数并且返回无效 - Action委托的签名,这将有效.
如果它有参数,你可以像这样调用它:
ProcessAndLog(() => ClassC.Process("value"), "C");
Run Code Online (Sandbox Code Playgroud)
如果您需要返回值,请考虑使用Func<T>而不是Action.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1548 次  |  
        
|   最近记录:  |