Небольшое введение: я работаю над проектом, в котором «сканирую» интерфейс, состоящий из нескольких асинхронных методов (все они являются вызовами 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
Использование общего метода в C# для вызова нескольких API (с использованием отражения) ⇐ C#
Место общения программистов C#
1730185262
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();
Подробнее здесь: [url]https://stackoverflow.com/questions/79134788/using-a-general-method-in-c-sharp-to-call-several-apis-using-reflection[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия