IndexOutOfRangeException をチェックするだけでなく、IDataReader ベースのオブジェクトにフィールドが存在するかどうかを確認する方法はありますか?
要するに、IDataReader ベースのオブジェクトを受け取り、厳密に型指定されたレコードのリストを作成するメソッドがあります。1 つの例では、1 つのデータ リーダーが、他のデータ リーダーにはないフィールドを持っています。必要がなければ、このメソッドにフィードするすべてのクエリを書き直して、このフィールドの何らかの形式を含めることは本当にしたくありません。これまでのところ、それを行う方法を理解できた唯一の方法は、以下に示すように、1 つの一意のフィールドを try/catch ブロックにスローすることです。
try
{
tmp.OptionalField = reader["optionalfield"].ToString();
}
catch (IndexOutOfRangeException ex)
{
//do nothing
}
「オプション フィールド」を他のクエリに追加したり、ローディング メソッドをコピーして、一方のバージョンではオプション フィールドを使用し、もう一方のバージョンでは使用しないようにする以外に、よりクリーンな方法はありますか?
私も2.0フレームワークにいます。