C# 如何使用泛型返回类型从方法返回具体类的实例

C# 如何使用泛型返回类型从方法返回具体类的实例,c#,.net,C#,.net,我有一个从我的应用程序调用的方法。方法是从Google.api.Util.Store.IDataStore实现的。我想从那个方法返回令牌,但我不知道如何返回。Token是类类型TokenResponse。如何从这样的方法返回类TokenResponse public Task<T> GetAsync<T>(string key) { //TokenResponse token = new TokenResponse(); //token.RefreshToken

我有一个从我的应用程序调用的方法。方法是从
Google.api.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的实例,因为 它没有new()约束


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

  public Task<T> GetAsync<T>(string key)
  {
     TokenResponse t = new TokenResponse();
     // ...
     return Task.FromResult((T) ((object) t));
  }
公共任务GetAsync(字符串键) { TokenResponse t=新的TokenResponse(); // ... 返回Task.FromResult((T)((object)T)); }
您应该保证总是使用类型参数
T=TokenResponse
调用方法
GetAsync
。否则,此代码将抛出
InvalidCastException

从方法中删除泛型参数。您想返回一个
Task
如果我更改方法的签名,如Task GetAsync(字符串键)将此
Task GetAsync(字符串键)
更改为This
Task GetAsync(字符串键)
谢谢@MichaelRandall,这一切都有效。但问题是,IDataStore应该实现这种方法。如果我这样做,我会出错。
  public Task<T> GetAsync<T>(string key)
  {
     TokenResponse t = new TokenResponse();
     // ...
     return Task.FromResult((T) ((object) t));
  }