c# - 我能让这个方法返回通用返回类型吗?

标签 c# generics

我能让这个方法通用吗?

  public static List<int> GetUnshippedOrders(string server,string port,string database,string username,string password, string orderStatus)
  {
        var orderNumbers = new List<int>();
        using (var conn = ConnectToMySql(server, port, database, username, password))
        {            
           var command = new MySqlCommand("SELECT OrderNumber FROM orders WHERE OrderStatus = @orderStatus;", conn);
            command.Parameters.AddWithValue("@orderStatus", orderStatus);
            var reader = command.ExecuteReader();
            while (reader.Read())
            {
                orderNumbers.Add(Convert.ToInt32(reader[0])); 
            }
        } 
        return orderNumbers;
   }

我希望能够处理各种返回类型,因为引用的订单号会根据连接到的数据库的模式而改变,我希望不必为每种可能的返回类型重载此方法(加上我想学习泛型)。

数据库模式由各种网络服务决定,没有一个在我的控制之下。 另外需要特别注意的是,orderStatus 也可以是多种类型(主要是字符串和整数)

最佳答案

也许是这样的:

public static List<T> GetUnshippedOrders<T>(string server,string port,string database,string username,string password, string orderStatus) where T : class
{
    var orderNumbers = new List<T>();
    using (var conn = ConnectToMySql(server, port, database, username, password))
    {            
       var command = new MySqlCommand("SELECT OrderNumber FROM orders WHERE OrderStatus = @orderStatus;", conn);
        command.Parameters.AddWithValue("@orderStatus", orderStatus);
        var reader = command.ExecuteReader();
        while (reader.Read())
        {
            orderNumbers.Add((T)(reader[0])); 
        }
    } 
    return orderNumbers;
}

关于c# - 我能让这个方法返回通用返回类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043125/

相关文章:

c# - 什么 "neutral culture"中断了 DateTime.TryParse()?

c# - 出于某种奇怪的原因,托管 C# 应用程序将字符串作为空字节 [] 传递...... IronPDF

arrays - 在 Swift 中统一数组和数组切片

java - Java 中具有有限范围的类型变量

c# - GoTo 的可接受使用?

c# - 从 ASP.NET 插入到 MS Access

c# - Cosmos db 上的延续 token 格式无效

c# - 希望将实体作为通用类型传递并提取通用功能

Java - Enumerable.Cast() 像 C#?

java - 可变长度参数列表将泛型和泛型数组作为参数传递 - Java