我有一些名为MyClient
的Wcf客户端。
让我们假设它可以执行N次操作:
MyClient.RunA(/*some args*/)
MyClient.RunB(/*some args*/)
MyClient.RunC(/*some args*/)
MyClient.RunD(/*some args*/)
....
参数的数量和类型可能会有所不同。
对于每个操作,应该包含在try-catch
中
using (var myClient = new MyClient(new NetTcpBinding(SecurityMode.None),
new EndpointAddress("some address goes here")))
{
try
{
myClient.RunA(/*some args*/) //(or RunB(..) and so on..)
myClient.Close();
//common success action
}
catch (TimeoutException e)
{
//common success action TimeoutException action
myClient.Abort();
}
catch (FaultException e)
{
//common success action FaultException action
myClient.Abort();
}
catch (CommunicationException e)
{
//same ...
}
....
catch (Exception e)
{
//common action
myClient.Abort();
}
}
因此,对于每种情况,当我需要调用其中一种服务方法时,我强制编写相同的长try-catch
块,并且它在为客户端调用的方法中唯一不同。
我如何制作通用方法,将客户端方法作为参数或类似的方法来减少这些相似代码部分的数量?