誰もが知っているように、SqlClient
クラスは、object
を返すExecuteScalar
メソッドをデータベースから取得する方法として提供しています。適切にキャストするのは大したことではありませんが、適切に型指定されたオブジェクトを返す厳密に型指定されたバージョンを作成したいと考えました。これはブール値とDateTime
秒間非常にうまく機能DALのExecuteScalarの実装に型パラメータを追加するにはどうすればよいですか?
public T ExecuteScalar<T>(IDbCommand cmd) where T : struct
{
cmd.Connection = this.conn;
object o = cmd.ExecuteScalar();
return (T)o;
}
:だから、私は、次のC#を書きました。ただし、整数の場合はInvalidCastException
がスローされます。だから、リフレクターのコピーで武装している人は、Field<T>(this DataRow, string columnName)
拡張メソッドに参加したことをやった。要求された型に値を変換してテストするために使用する内部クラスを切り出しました。しかし、値の型の場合、コードはちょうどreturn (T)value;
です。これはもちろん役に立ちません。
私の質問:誰も私のメソッドがすべての値の型と文字列の値を適切に返すようにする方法について考えている人はいますか?ブール値の文字列でも、DateTime
とintは問題ありません。
ありがとうございます!
FYI: 'string'は参照型です。 –
また、クエリが結果を返さない場合、キャストエラーが発生する可能性があります。 –
本当にありがとうございます。そして、いいえ、クエリーの結果が間違いなく返されます - 私はこの例外を手動で発生させたものを実行し、うまく動作します。 – benjy