IDataReader
それがインターフェイスであり、具象型であることは知っていますDataReader
が、それぞれをいつ使用するかはまだわかりません。Datareader
と の両方を使用して可能なデータを反復処理する必要がありIDataReader
ます。インターフェイスまたは具象型をいつ使用するかを決定するより良い方法はありますか?
4 に答える
読み取りを実際のリーダーから切り離す (作成する) 場合はいつでも、インターフェイスを使用します。たとえば、テスト用またはデータベースの切り替えの準備をしたい場合などです。
しかし、通常、コードを消費する DataReader はリーダーと密接に結合されているため、インターフェイスを気にする必要はありません。
あなたのコードが具象型について絶対に積極的に知る必要がない場合(たとえば、特定の実装でのみ使用できるメソッドを使用するため)、インターフェイスを参照してください。これにより、コードの柔軟性が大幅に向上します。たとえば、ADO.NET パイプにあるプロファイリング デコレータ (「MiniProfiler」など) を簡単に追加できます。にハードコーディングしている場合SqlDataReader
、これを行うことはできません。また、バックエンドを完全に変更できることも意味します。しかし、率直に言って、これは通常、大きな決定であり、大幅なコード変更を伴うため、そのシナリオはあまり「明白」ではありません。
しかし、私は、ほとんどの人が ADO.NET を含む配管コードを書きすぎているとも考えています。これを行うことができる "dapper"、またはより重い (しかしより機能豊富な) ORM のようなツールがあり、人的ミスのリスクを大幅に回避できます。
IDataReader
インターフェイスを参照しています。基本的に、メソッドが を受け入れる場合、IDataReader
それはそのインターフェースを使用するものをすべて受け入れることを意味します。これは、基本的に必要なデータ リーダーを使用できることを意味します。datareader がインターフェイスを実装しているため、メソッドは datareader を受け入れますIDataReader
。
これを行う利点は、メソッドが特定のタイプのデータ リーダーに固有のものではないことです。このインターフェースを実装する独自のクラスを作成することもできます。
このリンクを参照