SqlDataReader的扩展方法?

时间:2012-11-01 00:23:32

标签: c# extension-methods

我们在一个来自VB6的旧项目上运行了一个转换工具。

我们用Ado.Net代替OLEDB,用SqlDataReaders代替RecordSets。

但是转换后的代码总是会有一个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());

注意,[],不是()。

2 个答案:

答案 0 :(得分:4)

扩展方法实际上只是静态方法。由于没有“静态索引器”,因此您无法使用使用索引器语法的扩展方法。

答案 1 :(得分:2)

这个静态索引器只是花花公子......

public static string GetDRItem(this IDataReader dr, string colName)
{
    return dr[colName].ToString();
}