2

オプションで最後のパラメーターを取るメソッドがあります。

public static DataTable GetQueryResult<T>(string connectionString, string queryText, Dictionary<string, T> dicParameters = null)

このメソッドを次のように呼び出そうとすると:

DBOperations.GetQueryResult(myConnectionString, myQuery);

メソッド「GetQueryResult」のオーバーロードは2つの引数を取らないと言います。

このドキュメントでは、この種のメソッドに必要なパラメーターのみを渡すことができると説明しています。

よろしく

4

5 に答える 5

5

以下を明示的に指定する必要がありますT

DBOperations.GetQueryResult<YourType>(myConnectionString, myQuery);

を指定するdicParametersと、Tは暗黙的になります。

var dicParameters = new Dictionary<string, YourType>();
DBOperations.GetQueryResult(myConnectionString, myQuery, dicParameters );
于 2013-09-25T07:55:59.080 に答える
4

この場合、既定のパラメーターではなく、オーバーロードを使用することをお勧めします。

他の回答からわかるように、デフォルトのパラメーターを使用し、呼び出し元がそれを指定しない場合、呼び出しで T の型を指定する必要があります。

DBOperations.GetQueryResult<MyType>(myConnectionString, myQuery);

ただし、null の場合は辞書が使用されないため (おそらく!)、辞書を指定しない場合に、呼び出し元が関数を呼び出すためだけに任意の型を指定する必要があるのは無意味です。

したがって、辞書パラメーターをまったく持たないオーバーロードを導入する必要があります。これにより、呼び出し元にその問題が発生しなくなります。

于 2013-09-25T08:02:22.010 に答える
2
change the call from DBOperations.GetQueryResult(myConnectionString, myQuery); 
to e.g DBOperations.GetQueryResult<int>(myConnectionString, myQuery); or DBOperations.GetQueryResult<string>(myConnectionString, myQuery);  whatever data type you will be using for dictionary
于 2013-09-25T09:06:05.847 に答える
2

メソッド呼び出し時に型を指定できる

DBOperations.GetQueryResult<Person>(myConnectionString, myQuery);
于 2013-09-25T07:56:37.487 に答える
2

T最後のパラメーターを指定しないと、コンパイラーは何が何であるかを推測できません。

明示的にメソッドを呼び出してみてくださいT:

DBOperations.GetQueryResult<Something>(myConnectionString, myQuery);
于 2013-09-25T07:56:55.190 に答える