using System;
public class Test
{
static void CallServiceXY(params object []objects)
{
Console.WriteLine("a");
throw new Exception("");
}
static void Retry(int maxRetryCount, Action<object[]> action, params object[] obj)
{
int retryCount = 1;
while ( retryCount <= maxRetryCount)
{
try
{
action(obj);
return;
}
catch
{
retryCount++;
}
}
}
public static void Main()
{
Retry(2,CallServiceXY);
Retry(2,CallServiceXY,"");
Retry(2,CallServiceXY,"","");
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgCglzdGF0aWMgdm9pZCBDYWxsU2VydmljZVhZKHBhcmFtcyBvYmplY3QgW11vYmplY3RzKQoJewoJCUNvbnNvbGUuV3JpdGVMaW5lKCJhIik7CgkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiIik7Cgl9CgkKCXN0YXRpYyB2b2lkIFJldHJ5KGludCBtYXhSZXRyeUNvdW50LCBBY3Rpb248b2JqZWN0W10+IGFjdGlvbiwgcGFyYW1zIG9iamVjdFtdIG9iaikKCXsKCQlpbnQgcmV0cnlDb3VudCA9IDE7CgkJd2hpbGUgKCByZXRyeUNvdW50IDw9IG1heFJldHJ5Q291bnQpCgkJewoJCQl0cnkKCQkJewoJCQkKCQkJYWN0aW9uKG9iaik7CgkJCXJldHVybjsKCQkJfQoJCQljYXRjaAoJCQl7CgkJCQlyZXRyeUNvdW50Kys7CgkJCX0KCQl9Cgl9CgoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewogICAgCVJldHJ5KDIsQ2FsbFNlcnZpY2VYWSk7CgkJUmV0cnkoMixDYWxsU2VydmljZVhZLCIiKTsKCQlSZXRyeSgyLENhbGxTZXJ2aWNlWFksIiIsIiIpOwkJCgl9Cn0=