从 .net 中的 Generic T 获取 SqlCommand 类型
Posted
技术标签:
【中文标题】从 .net 中的 Generic T 获取 SqlCommand 类型【英文标题】:Getting the SqlCommand Type from Generic T in .net 【发布时间】:2012-04-03 23:23:19 【问题描述】:我创建了一个名为ExecuteProcedure<T>(T command, string parameters)
的通用函数,现在在ExecuteProcedure
函数中我想转换T into SqlCommand
,这样我就可以使用SqlCommand's
属性,如Parameters.Add()
这是我的代码。
T could be SqlCommand or SqlDataAdapter
这是我的代码:
public void ExecuteProcedure<T>(T command, string parameters)
using (connection)
if (typeof(T) == typeof(SqlCommand))
//how to convert into SqlCommand Here to use command.CommandType Property below.
command.CommandType = CommandType.StoredProcedure;
foreach (string param in parameters.Split(','))
SqlParameter par = new SqlParameter(param, param.Substring(1, param.Length - 1));
command.Parameters.Add(par);
connection.Open();
command.ExecuteNonQuery();
【问题讨论】:
【参考方案1】:我相信你所要做的就是:
SqlCommand cmd = (SqlCommand)(object)command;
【讨论】:
嗨@Chris,我试过了,但它不起作用,它抛出编译时错误,说不能将类型 T 转换为 System.Data.SqlClient.SqlCommand 啊,是的,没有限制。尝试转换为“对象”,然后转换为已知类型。答案已更新。【参考方案2】:您可以使用此代码将 T 转换为 SqlCommand
SqlCommand cmd = (SqlCommand)Convert.ChangeType(command, typeof(SqlCommand));
无论如何感谢@Chris
【讨论】:
以上是关于从 .net 中的 Generic T 获取 SqlCommand 类型的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Django generic.ListView 中的用户前端获取参数?
EF Generic Repository 从新插入的通用实体获取 Id
无法从“System.Collections.IList”转换为“System.Collections.Generic.IEnumerable<T>”