gpt4 book ai didi

c# - 重播功能和参数列表

转载 作者:太空狗 更新时间:2023-10-29 18:11:07 25 4
gpt4 key购买 nike

我有一系列的功能,我希望有以下功能。

  • 调用函数时,将自身添加到记住参数和值的函数列表中
  • 允许稍后调用函数列表

不同的函数有各种不同的参数,我正在努力想出一种优雅的方法来做到这一点。任何帮助将不胜感激。

最佳答案

我认为这会满足您的需求,但是这些功能并不是“自行添加”的。

public class Recorder
{
private IList<Action> _recording;
public Recorder()
{
_recording = new List<Action>();
}
public void CallAndRecord(Action action)
{
_recording.Add(action);
action();
}
public void Playback()
{
foreach(var action in _recording)
{
action();
}
}
}

//usage
var recorder = new Recorder();
//calls the functions the first time, and records the order, function, and args
recorder.CallAndRecord(()=>Foo(1,2,4));
recorder.CallAndRecord(()=>Bar(6));
recorder.CallAndRecord(()=>Foo2("hello"));
recorder.CallAndRecord(()=>Bar2(0,11,true));
//plays everything back
recorder.Playback();

使函数“自行添加”的一种方法是使用 AOP 库,例如 postsharp 或 linfu 动态代理,并添加一个拦截器,将函数和参数添加到数组中。要做到这一点可能会比 IMO 值得做更多的工作,因为上面的方法要简单得多并且仍然可以实现所需的功能。

关于c# - 重播功能和参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584155/

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