[英]C# FetchAsync and delegate call in method
/// <summary>
/// Delegate for executing an asynchronous request.
/// </summary>
public delegate void ExecuteRequestDelegate<T>(LazyResult<T> response);
public void FetchAsync([Optional] ExecuteRequestDelegate<TResponse> methodToCall)
{
GetAsyncResponse(
(IAsyncRequestResult state) =>
{
var result = new LazyResult<TResponse>(() =>
{
// Retrieve and convert the response.
IResponse response = state.GetResponse();
return FetchObject(response);
});
// Only invoke the method if it was set.
if (methodToCall != null)
{
methodToCall(result);
}
else
{
result.GetResult();
}
});
}
我想现在调用FetchAsync
但我不知道如何
service.Userinfo.Get().FetchAsync(new ExecuteRequestDelegate<Userinfo>() {...});
我得到的回复是ExecuteRequestDelegate不包含一个带0参数的构造函数。
我能做什么? 我想获取Userinfo
数据?
FetchAsync
的参数是一个接受LazyResult
作为唯一参数并返回void
。 这与“回调”方法的一般模式一致,这是编写异步方法的一种方式。 为了异步,这个方法会在被调用后立即返回,当逻辑上表示的操作实际完成时,它将调用你的回调方法,将异步操作的结果作为参数传递给回调。
虽然你可以写出一个命名方法来处理这种情况,但在这里使用lambda通常是合适的:
service.Userinfo.Get().FetchAsync(
lazyResult => Console.WriteLine(lazyResult.Result));
如果你有一行以上的代码,那么值得花时间使用一个命名方法:
public void ProcessResult(LazyResult<Userinfo> result)
{
//Do stuff
}
service.Userinfo.Get().FetchAsync(ProcessResult);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.