Как вернуть экземпляр конкретного класса из метода с типом возвращаемого значения c - PullRequest
1 голос
/ 20 марта 2020

У меня есть метод, который вызывается из моего приложения. Способ реализован с Google.Apis.Util.Store.IDataStore. Я хотел бы вернуть токен из этого метода, но я не знаю как. Токен является типом класса TokenResponse. Как вернуть класс TokenResponse из метода, подобного этому?

public Task<T> GetAsync<T>(string key)
{
  //TokenResponse token = new TokenResponse();
  //token.RefreshToken = @"rere545454545";
  //return token; -- I would like to return this, but it throws error
  return Task.FromResult<T>(default); //that works, but not much help out of it
}

Обновление

В основном я хотел бы вернуть свой собственный токен, который у меня уже есть в базе данных. Но при попытке создать новый экземпляр, например:

TokenResponse token = new TokenResponse() 

throws и error

не удается создать экземпляр типа переменной TokenResponse, поскольку он не имеет ограничения new ()

1 Ответ

1 голос
/ 20 марта 2020

Самый простой способ решить вашу проблему - использовать следующий подход:

  public Task<T> GetAsync<T>(string key)
  {
     TokenResponse t = new TokenResponse();
     // ...
     return Task.FromResult((T) ((object) t));
  }

Вы должны гарантировать, что метод GetAsync<T> всегда будет вызываться с параметром типа T = TokenResponse. В противном случае этот код выдаст InvalidCastException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...