修改Func for out参数

时间:2015-08-20 11:04:18

标签: c#

我有一个功能:

private static Response WaitForAPIReply(Func<Response> f)
{
  while (true)
  {
    var response = f();
    if (response.MISSING == "WAIT")
    {
      Console.WriteLine("WAIT");
      Thread.Sleep(TimeSpan.FromSeconds(0.1));
    }
    else
    {
      return response;
    }
  }
}

我将WaitForAPIReply称为:

private static Response GetTestData(int a, string b)
{
  return WaitForAPIReply(() => GetData(a, b));
}

我想在out中添加一个GetData参数,并在WaitForAPIReply函数中使用它。但是我无法为此修改WaitForAPIReply? 我通过网络搜索可以看到我可以使用委托。但我将参数作为参数传递给WaitForAPIReply

时无法解决此问题

1 个答案:

答案 0 :(得分:1)

为什么要修改WaitForAPIReply?请注意,现在GetData有两个参数,但在f()内的WaitForAPIReply调用中,它们不会在任何地方使用。 out参数应在GetTestData内的某处声明,以便您可以将其传递到GetData

// First approach
private static Response GetTestData(int a, string b)
{
    int c;
    return WaitForAPIReply(() => GetData(a, b, out c));
}

// Second approach
private static Response GetTestData(int a, string b, int c)
{
    return WaitForAPIReply(() => GetData(a, b, out c));
}