c# - 在 C# 中传递具有不同类型的泛型参数列表
问题描述
我不确定我在 C# 中尝试做的事情是否可行,但也许有人可以引导我走向正确的方向。
我正在尝试创建一个执行不同 SQL 存储过程的通用函数。我想在建立连接后传递我的过程名称、参数和一个回调函数来触发。但是我遇到的问题是我无法传递各种类型的参数的通用数组。Altho SQLParam 也是一个泛型类,我必须在 ExecuteSQL() 函数中指定它的类型,它将所有参数的类型限制为一种类型。
有没有办法以某种方式绕过这个限制?
public static class SQL<T> {
async public static Task<T> ExecuteSQL(string ProcName, List<SQLParam<...ONE TYPE...>> Params, Func<SqlCommand, T> callback)
{
using (SqlConnection sqlConnection = new SqlConnection(Utilities.Common.Configuration.GetValue<string>("ConnectionStrings:DefaultConnection")))
{
using (SqlCommand sqlCommand = new SqlCommand(ProcName) { CommandType = System.Data.CommandType.StoredProcedure, Connection = sqlConnection })
{
Params.ForEach(param => sqlCommand.Parameters.Add(new SqlParameter("@" + param.Name, param.Value)));
sqlConnection.Open();
return callback(sqlCommand);
}
}
}
}
public class SQLParam<T> {
string Name { get; set; }
T Value { get; set; }
}
解决方案
推荐阅读
- c# - 在 Roslyn Analyzer 中未命中 IdentifierToken
- javascript - 使用窗口加载或文档准备延迟图像以提高页面速度 scpre
- python - Django,标签,href。怎么去上层?
- python - 为什么正则表达式 r" " 不接 " "?
- visual-c++ - OpenCV程序中的坏数组新长度错误
- spring - 使用投影检索子集合的特定字段
- r - 将数据标签添加到 R 中的 Plotly Bullet Chart
- javascript - 无法在 React Native Flatlist 组件中运行 onEndReached
- php - 从php向表中插入行时如何修复我的MySQLi数据库
- javascript - 如何在静态文件中使用 django 模板语法