我能让这个方法通用吗?
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/