我正在处理一个使用Windows Mobile设备调用Web服务的项目。
有一个需求规定,如果服务调用失败,则应提示用户重试。目前,有一个服务代理程序调用Web服务代理上的所有方法,如果调用失败,则会出现一些代码提示用户重试,然后再次尝试调用。它看起来像这样:
有一个需求规定,如果服务调用失败,则应提示用户重试。目前,有一个服务代理程序调用Web服务代理上的所有方法,如果调用失败,则会出现一些代码提示用户重试,然后再次尝试调用。它看起来像这样:
public void MyServiceCall(string stringArg, bool boolArg, int intArg)
{
try
{
MyWebService.MyServiceCall(stringArg, boolArg, intArg);
}
catch(SoapException ex)
{
bool retry = //a load of horrid code to prompt the user to retry
if (retry)
{
this.MyServiceCall(stringArg, boolArg, intArg);
}
}
}
在系统中,catch块中的内容比这个片段要复杂得多,并且CTRL-C CTRL-V模式已被用于每个服务调用中进行复制。我想将这个重复的代码重构为一个方法,但我不确定重试方法调用的最佳方法。我考虑将委托作为新方法的参数,但由于我不知道签名,我不确定如何以通用的方式实现这一点。有人能帮忙吗?谢谢。