У вас есть это не стати c класс:
public class IgRestApiClient{
public async Task<IgResponse<CreatePositionResponse>> createPositionV2(CreatePositionRequest createPositionRequest)
{
return await _igRestService.RestfulService<CreatePositionResponse>("/gateway/deal/positions/otc", HttpMethod.Post, "2", _conversationContext, createPositionRequest);
}
}
Вы пытаетесь использовать его статически:
var response = await IgRestApiClient.createPositionV2(buyDataX);
Вам либо нужно это (сделайте класс стати c):
public static class IgRestApiClient{
Или вот это (сначала создайте экземпляр):
var x = new IgRestApiClient();
var response = await x.createPositionV2(buyDataX);
Какой выбрать? Ну .. какой бы ни использовался в другом месте. Если это единственное использование, я думаю, вам нужно решить, основываясь на том, как IgRestApiClient выглядит, как должен вести себя его жизненный цикл. Возможно, он использует что-то должным образом и, следовательно, выглядит так, как будто он должен быть единичным экземпляром, или, возможно, он утилизирует что-то после однократного использования и, следовательно, полагается на обновление при каждом использовании. (У меня такое ощущение, что изначально это не ваш код, который вы поддерживаете)
Кстати, сигнатура метода станет проще, если вы using dto.endpoint.positions.create.otc.v2
, если вы еще этого не сделали - тогда вы можно просто сослаться на CreatePositionRequest
Кроме того, вы можете объявить этот метод следующим образом:
public Task<IgResponse<CreatePositionResponse>> createPositionV2Async(CreatePositionRequest createPositionRequest)
{
return _igRestService.RestfulService<CreatePositionResponse>("/gateway/deal/positions/otc", HttpMethod.Post, "2", _conversationContext, createPositionRequest);
}
}
Здесь может не потребоваться использование async / await, поскольку метод не выполняет ничего, кроме как сделать звонок, получить задание и передать его. Это не значит, что он больше не асин c в своем поведении; он возвращает задачу, он асинхронный, и я переименовал его, чтобы выделить это, но если у вас есть методы, которые ничего не делают с задачами, отличными от return await
, то вы можете просто вернуть задачу, которую другой Метод создан и пусть вызывающий метод ожидает его точно так же.
Прочитайте Какова цель "return await" в C#? для некоторого интересного обсуждения концепции