0

、という名前の総称関数を作成しました。これで、キャストしたい関数ExecuteProcedure<T>(T command, string parameters)の中に、コードのようなプロパティを使用できるようになりました。ExecuteProcedureT into SqlCommandSqlCommand'sParameters.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();
    }
}
4

2 に答える 2

0

私はあなたがしなければならないのは:

SqlCommand cmd = (SqlCommand)(object)command;
于 2012-04-03T23:28:26.797 に答える
0

このコードを使用して、TをSqlCommandにキャストできます

SqlCommand cmd = (SqlCommand)Convert.ChangeType(command, typeof(SqlCommand));

とにかく@Chrisに感謝します

于 2012-04-03T23:56:46.017 に答える