1
private static K ExecuteStoredProcedure<K>(string connectionString, string storedProcedure, SqlParameter[] parameters, Func<I, K> readFunction)

使用例を以下に示します。

 return ExecuteStoredProcedure<SqlDataReader, Dictionary<string, string>>(
     connectionString, 
     "uspSearchStatisticsSelectByTokenPerDayGroupByDate", 
     parameters, 
     (reader) =>
     {
         reader.Read();
         int readCount = reader.FieldCount;

         Dictionary<string, string> results = new Dictionary<string, string>();
         results.Add("FailedRequests", Convert.ToString(reader[5]));
         results.Add("TotalRequests", Convert.ToString(reader[4]));
         results.Add("AverageResponseTime", Convert.ToString(reader[3]));

         return results;
     }
 );

コンパイラは戻ってきます

エラー 520 型または名前空間名 'I' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

しかし、それを参照できるはずだと思いましたか?

更新: 私はあまりにも一般的なものを使おうとしていたので、実際には必要ありませんでした。

私は次のことを行ってきました... private static K ExecuteStoredProcedure<K>(string connectionString, string storedProcedure, SqlParameter[] parameters, Func<SqlDataReader, K> readFunction)

4

4 に答える 4

9

あなたの関数は と で一般的IですK。署名は次のようにする必要があります。

K ExecuteStoredProcedure<I, K>(...)
于 2013-03-16T22:43:35.010 に答える
2

関数の入力パラメーターは既知であるため、一般的であってはなりません。パラメータを作成するだけFunc<SqlDataReader, K> readFunctionです。

于 2013-03-16T22:47:35.973 に答える
1

上部の静的メソッドは、 という型パラメーターを 1 つだけ宣言しますK。のように 2 つあるということstatic K ExecuteStoredProcedure<I, K>( ... )ですか? メソッドを呼び出すときに、2 つの型パラメーターを指定するためです。

コンパイラ エラーは非常に明確Func<I, K>ですI

于 2013-03-16T22:45:29.640 に答える
0

あなたのリーダーは Dictionary のみを返し、コード K = Dictionary をどのように使用しているかについてのみを返しているため、I の値が欠落している可能性があります。関数を正しく宣言しないか、戻り値を修正する必要があります。

于 2013-03-16T22:49:32.883 に答える