中使用默认泛型值

中使用默认泛型值

我有一些用 C# 编写的代码。我正在尝试编写一些可以重用的通用代码。我的实际代码更复杂。但是,代码问题如下所示:

public async Task<T> ExecuteQueryAsync<T>(string sql)
{
  var results = default(T);
  using (var database = new SqlConnection("[ConnectionString]"))
  {
    database.Open();
    results = await database.QueryAsync<T>(sql);
  }
  return results;
}

当我构建我的项目时,我收到一个编译时错误,内容为:
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<T>' to 'T'. An explicit conversion exists (are you missing a cast?)

我不完全明白为什么我会收到这个错误。我打算这样称呼它:
Adapter adapter = new Adapter();
var results = await adapter.ExecuteQueryAsync<IEnumerable<Customer>>("SELECT * FROM Customer");

在上面, T 不是 IEnumerable<T> 吗?如果是这种情况,我不明白为什么我会在编译时收到这种类型转换错误。

谢谢!

最佳答案

尝试这样的事情。

public async Task<IEnumerable<T>> ExecuteQueryAsync<T>(string sql)
{
  IEnumerable<T> results = Enumerable.Empty<T>();
  using (var database = new SqlConnection("[ConnectionString]"))
  {
    database.Open();
    results = await database.QueryAsync<T>(sql);
  }
  return results;
}

关于c# - 在 C# 中使用默认泛型值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30460749/

10-11 02:00