处理相关函数的序列

时间:2017-05-20 09:10:34

标签: c# .net design-patterns architecture

我有几个依赖远程资源返回结果的函数。 这个远程资源有很多错误或意外的响应,我无法改变。 有一系列函数,每个函数都取决于之前函数的结果。 每个功能的逻辑是不同的。

例如:

bool remoteFunction(string resource, string parameter = "")
{
// for example request
//for simplicity this is considered a request, but each function has different logic
return request.Url("example.com" + resource, parameter);
}

var firstResult = remoteFunction("a");                  //1st step
var secondResult = remoteFunction("b", firstResult);    //2nd step
var thirdResult = remoteFunction("c", secondResult);    //3rd step
var fourthResult = remoteFunction("d", thirdResult);    //4rth steo

我想做的是:

  • 继续重试以执行该功能,直到它返回我们想要的结果。 这可以在函数内部或外部完成。
  • 我希望能够 从一个函数跳回到前一个函数并继续 流动。即:从第4步跳到第2步并继续 那里。

这样做的最佳设计是什么?

感谢您的帮助

澄清: 更清楚一点,我只想在函数抛出异常时返回序列。即: 如果第4个函数抛出异常,我必须回到第1个并从那里继续。

1 个答案:

答案 0 :(得分:0)

目前还不清楚他们需要按顺序运行。这是代码

            var firstResult;
            var secondResult;
            var thirdResult;
            var fourthResult;
            int start = 3;
            for (int i = start; i < 4; i++)
            {
                switch (i)
                {
                    case 0 :
                        firstResult = remoteFunction("a"); 
                        break;
                    case 1:
                        secondResult = remoteFunction("b", firstResult);
                        break;
                    case 2:
                        thirdResult = remoteFunction("c", secondResult);
                        break;
                    case 3:
                        fourthResult = remoteFunction("d", thirdResult);
                        break;
                }
            }