首页 > 解决方案 > 如何从具有通用返回类型的方法返回具体类的实例

问题描述

我有一个从我的应用程序中调用的方法。方法从Google.Apis.Util.Store.IDataStore. 我想从该方法返回令牌,但我不知道如何。Token 是类类型 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() 

抛出和错误

无法创建变量类型 TokenResponse 的实例,因为它没有 new() 约束

标签: c#.net

解决方案


解决问题的最简单方法是使用下一种方法:

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

您应该保证GetAsync<T>始终使用类型参数调用该方法T = TokenResponse。否则,此代码将抛出InvalidCastException.


推荐阅读