我有一些包含大量嵌套循环的代码块(我在这里要提到的是我们对代码的速度没有问题)。现在反过来说,我必须在同一个Controller Action中使用相同的功能再次使用所有循环,但我不想只复制和粘贴相同的代码,只是在那里更改变量。
代码的概念是第一个For循环,我们通过某些API发出请求,如果响应为空,我们就停止发送请求。在循环内部,我们正在读取每个调用的JSON响应并将其添加到我们的类中:
var transactions = new List<Transaction>();
for (int i = 0; i < pages; i++)
{
if (morePagesInXero == false)
{
valueCollection.Add("page", pages.ToString());
morePages= true;
}
else
{
valueCollection.Set("page", pages.ToString());
}
var invoices = api.GetArray(GlobalConstants.Invoices, where, null, valueCollection);
dynamic invoicesResponse=JObject.Parse(invoices.ToString());
var jsonTransactions =((JProperty((JContainer)invoicesResponse).Last).Value;
var arrayTransactions = ((JArray)jsonTransactions);
// Check if there are more than 1 page
if (arrayTransactions.Count == 0)
{
break;
}
else
{
foreach (var item in jsonTransactions)
{
transaction.taxDirection = "DummyDataFromResponseJSON";
transaction.invoiceNumber = "DummyData1FromResponseJSON"
transaction.upstreamModifiedAt = "DummyData2FromResponseJSON";
transaction.currency = "DummyData3FromResponseJSON";
transaction.customerId = "DummyData4FromResponseJSON";
// and so on ...
transactions.Add(transaction);
}
pages++;
}
现在我必须在不同的端点上对API进行新的调用,但操作JSON响应的逻辑与这些循环的逻辑相同。请建议是否可以重复使用上面的代码,以使其更通用,只需重复使用它。
提前致谢。