Использование общего метода в C# для вызова нескольких API (с использованием отражения)C#

Место общения программистов C#
Ответить
Anonymous
 Использование общего метода в C# для вызова нескольких API (с использованием отражения)

Сообщение Anonymous »

Небольшое введение: я работаю над проектом, в котором «сканирую» интерфейс, состоящий из нескольких асинхронных методов (все они являются вызовами GraphQL).
Используя отражение, я я могу получить нужные мне методы, и теперь я хочу вызвать этот метод.
Проблема: я не могу получить данные путем вызова. Проблема, похоже, в отсутствии у меня знаний асинхронного программирования.
Пока мой метод выглядит так:
public static async Task RunMethodAsync(TClass Class,MethodInfo method, params object[] param)
{
try
{
Task task = (Task)method.Invoke(Class, param);

// Await the task to get the result
await task.ConfigureAwait(false);

// Retrieve the result from the Task
var resultProperty = task.GetType().GetProperty("Result");
TReturn result = (TReturn)resultProperty.GetValue(task);

return result;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

TReturn — это модель, которую я ожидаю получить от метода, который я вызываю, TClass — это класс, использующий мой интерфейс.
Какова будет конечная цель заключается в запуске моего метода, используя:
Task[] tasks = new Task[]{Task.Run(() => connectorHelper.pullDataToDataLake(connectorService, method, new object[] { }, filPath))

public async Task pullDataToDataLake(TService service,MethodInfo method, object[] param, string filPath = "")
{
try
{
object obj = await ReflectionHelper.RunMethodAsync(service, method, param);
await UploadModelToBlob(obj, filPath);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

Если это поможет, два метода, которые я хочу вызвать в своем тестировании, определены так (не беспокойтесь об атрибутах)
[CallAPIOnce]
[TableName("RateLimit")]
Task GetRateLimit();

[CallAPIOnce]
[TableName("Entities")]
Task GetEntities();


Подробнее здесь: https://stackoverflow.com/questions/791 ... reflection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»