Você deseja o método SqlCommandBuilder.DeriveParameters(SqlCommand). Observe que ele requer uma viagem de ida e volta adicional ao banco de dados, portanto, é um impacto significativo no desempenho. Você deve considerar armazenar em cache os resultados.
Um exemplo de chamada:
using (SqlConnection conn = new SqlConnection(CONNSTRING))
using (SqlCommand cmd = new SqlCommand("StoredProc", conn)) {
cmd.CommandType = CommandType.StoredProcedure;
SqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["param1"].Value = "12345";
// ....
}