2

我有一个功能:

public void Callback()
{
    // Does some stuff
}

我想将它传递给另一个函数,然后将它传递给另一个函数,然后执行该函数......到目前为止我有这个:

public void StartApp() // entry point
{
    StartMyAwesomeAsyncPostRequest( Callback );
}

public void StartMyAwesomeAsyncPostRequest( Delegate callback )
{
    // Work out some stuff and start a post request
    TheActualAsyncPostRequest( callback );
}

public void TheActualAsyncPostRequest( Delegate callback )
{
    // Do some jazz then run the delegated function
    callback();
}

我查看了其他一些示例,但来自 PHP 和 javascript 背景,我正在为解释而苦苦挣扎,您能否给我一个针对我的请求的示例或解释?提前致谢!

4

1 回答 1

7

尝试将参数类型声明为特定类型的委托。在这种情况下,由于您的回调不接受任何参数并且不返回任何结果,请使用Action

public void StartMyAwesomeAsyncPostRequest(Action callback)
{
    TheActualAsyncPostRequest(callback);
}

public void TheActualAsyncPostRequest(Action callback)
{
    callback();
}

如果您希望能够将参数传递给回调,请使用 an Action<T>(或其众多表亲之一,以传递多个参数):

public void StartMyAwesomeAsyncPostRequest(Action<string> callback)
{
    TheActualAsyncPostRequest(callback);
}

public void TheActualAsyncPostRequest(Action<string> callback)
{
    callback("Foo");
}

或者要从回调中获取结果,请使用 a Func<T>(或其众多表亲之一,传递任何参数):

public void StartMyAwesomeAsyncPostRequest(Func<string> callback)
{
    TheActualAsyncPostRequest(callback);
}

public void TheActualAsyncPostRequest(Func<string> callback)
{
    string result = callback();
}
于 2013-09-18T22:21:24.440 回答