首页 > 解决方案 > 在 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#asp.net-core

解决方案


推荐阅读