public static class WcfServiceClient where TProxy : ICommunicationObject, IDisposable, new()
{
///
/// Which allows writing this kind of code:
/// Service.Using(svc => svc.PerformOperation());
/// Or:
/// Service.Using(svc =>
/// {
/// var result = svc.PerformOperation();
/// ProcessResult(result);
/// });
///
///
public static void Using(Action action)
{
var proxy = new TProxy();
System.Net.ServicePointManager.Expect100Continue = false;
bool success = false;
try
{
action(proxy);
proxy.Close();
success = true;
}
finally
{
if (!success)
{
proxy.Abort();
}
}
}
public static TResult Using(Func func)
{
var proxy = new TProxy();
bool success = false;
try
{
TResult result = func(proxy);
proxy.Close();
success = true;
return result;
}
finally
{
if (!success)
{
proxy.Abort();
}
}
}
}
0 Comments:
Post a Comment
<< Home