gpt4 book ai didi

c# - 如何链接列表中的方法,以便一个方法的结果成为下一个方法的输入?

转载 作者:行者123 更新时间:2023-11-30 19:57:28 25 4
gpt4 key购买 nike

我有一个包含执行方法的处理器对象列表。现在我想从列表中按顺序执行每个 processor.Execute(),但希望一个的结果成为下一个的输入,依此类推,直到列表中的最后一个成为最终结果。

我的代码是这样的

    private IDocument Execute(IDocument document, List<IProcessor> processors)
{
IDocument result = document;
foreach (IProcessor p in processors)
{
result = p.Execute(document);
}

//return result;
}

我事先不知道列表中有多少个处理器,但它们都是相同的(即执行方法的方法签名都相同)

最佳答案

我假设您想将更新后的 result 变量作为输入:

private IDocument Execute(IDocument document, List<IProcessor> processors)
{
IDocument result = document;
foreach (IProcessor p in processors)
{
result = p.Execute(result);
} // ^ here

return result;
}

您可以使用 LINQ 更简洁地表达您的方法:

private IDocument Execute(IDocument document, List<IProcessor> processors)
{
return processors.Aggregate(document, (res, proc) => proc.Execute(res));
}

关于c# - 如何链接列表中的方法,以便一个方法的结果成为下一个方法的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29858301/

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