1

VB6 からの古いプロジェクトで変換ツールを実行しました。

OLEDB を Ado.Net に、RecordSets を SqlDataReaders に置き換えます。

しかし、変換されたコードは常にrs.Fields['FirstName']参照を行います。これは、データベース リーダーで行われると思いrs['FirstName']ます (rs は q SqlDataReader.

すべてのコードを調べる代わりに、SqlDataReader で " Fields['FieldName']" を利用する拡張メソッドを作成する方法はありますか?

これは私の現在の試みです:

public static class SqlUtils
    {
        public static object Fields(this SqlDataReader dataReader, string fieldname)
        {
            return dataReader[fieldname];
        }
    }

ただし、これは次の場合に機能します。

Console.WriteLine(reader.Fields("First").ToString());

私は処理する必要があります:

Console.WriteLine(reader.Fields["First"].ToString());

() ではなく [] であることに注意してください。

4

2 に答える 2

4

拡張メソッドは、実際には単なる静的メソッドです。「静的インデクサー」がないため、インデクサー構文を使用する拡張メソッドを使用できません。

于 2012-11-01T01:07:50.507 に答える
3

この静的インデクサーはダンディに動作します...

public static string GetDRItem(this IDataReader dr, string colName)
{
    return dr[colName].ToString();
}
于 2013-03-22T21:12:07.060 に答える