Например, у меня есть следующие методы:
private async Task<T> Read<T>(string id, string endpoint)
{
//....
}
private async Task<List<T>> List<T>(int start, int count, string endpoint, List<FilterData> filterData = null)
{
//....
}
(и более с различными свойствами) Но все эти методы могут выдавать BillComInvalidSessionException
Если я вызвал метод, выдает это исключение, я хочу выполнитьнекоторая логика и отзыв вызвал метод.Т.е.:
private async Task<T> ReadWithRetry<T>(string id, string endpoint)
{
try
{
return await Read<T>(id, endpoint);
}
catch (BillComInvalidSessionException)
{
SessionId = new Lazy<string>(() => LoginAsync().Result);
return await ReadWithRetry<T>(id, endpoint);
}
}
private async Task<List<T>> ListWithRetry<T>(int start, int count, string endpoint, List<FilterData> filterData = null)
{
try
{
return await List<T>(start, count, endpoint, filterData);
}
catch (BillComInvalidSessionException)
{
SessionId = new Lazy<string>(() => LoginAsync().Result);
return await ListWithRetry<T>(start, count, endpoint, filterData);
}
}
Как создать один общий метод, который будет выполнять ту же логику, но получать разные методы в качестве параметров?