SqlDataReader 的扩展方法?

Cra*_*aig 2 c# extension-methods

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

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

但转换后的代码总是会进行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];
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,这适用于:

Console.WriteLine(reader.Fields("First").ToString());
Run Code Online (Sandbox Code Playgroud)

我需要处理:

Console.WriteLine(reader.Fields["First"].ToString());
Run Code Online (Sandbox Code Playgroud)

注意,是[],不是()。

Jak*_*cki 5

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