Здравствуйте, есть такой вопрос:
Предположим, что есть класс функций, которые представляют из себя, скажем так, обертки над другими функциями:
class ExtWebAPI
{
public AParam GetParameter(string aSerialNumber, string aParameterName)
{
AParam ap = null;
int count = 0;
while (++count < _RetriesCount)
{
try
{
ap = _Main.GetParameter(aSerialNumber, aParameterName);
break;
}
catch (Exception)
{
ExceptionHandling();
}
}
return ap;
}
public AResult OperationStart(string aSerialNumber, string PartNumber, string aOperationCode)
{
AResult ar = null;
int count = 0;
while (++count < _RetriesCount)
{
try
{
ar = _Main.OperationStart(aSerialNumber, PartNumber, aOperationCode);
break;
}
catch (Exception)
{
ExceptionHandling();
}
}
return ar;
}
}
То есть, некая функция Веб-Сервиса пытается выполниться, если неудачно, то происходит переключение между серверами и происходит повторение.
Вопрос такой:
У меня в проекте таких функций около 50 штук и выглядят они посложнее (тут просто упростил). Но видно, что все обертки по сути делают одно и то же — вызывают в цикле другую функцию.
Поэтому, хотелось бы как-то уменьшить объем кода.
Сюда просится какая-то функция, которая бы брала другую функцию как аргумент. Но сигнатуры у всех совершенно разные. Такой вариант не подходит.
Или какой-нибудь макрос, как в C++, но в C# их нет.
Есть ли какой-то способ?
Заранее спасибо.