gpt4 book ai didi

C# 将类作为参数传递给方法并在其中调用静态方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:35 24 4
gpt4 key购买 nike

我是 C# 的新手,正在寻找执行以下实现的最佳方法。

我的项目有几个模型类(比如 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

我想做的是编写一个方法,然后在其中添加日志和重复性工作..

private void CommonMethod(Class)
{
Check what class
Add Process started Log
Call Process method
Add proicess finished Log
}

最佳答案

您可以创建接受委托(delegate)并执行日志记录的函数,如下所示:

public void ProcessAndLog(Action action, String processName)
{
Log.WriteLog(DateTime.Now + $" Class {processName} Process Started");
action();
Log.WriteLog(DateTime.Now + $" Class {processName} Process Finished");
}

然后这样调用它:

ProcessAndLog(ClassA.Process, "A"); //"A" could be part of ClassA - e.g. ClassA.Name;
ProcessAndLog(ClassB.Process, "B");
//etc

只要每一次 Process 就会起作用方法没有参数并返回 void - Action 的签名代表。

如果它有参数,你可以这样调用它:

ProcessAndLog(() => ClassC.Process("value"), "C");

如果您需要返回值,请考虑 Func<T>而不是 Action .

关于C# 将类作为参数传递给方法并在其中调用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38269124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com