我们在一个来自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());
注意,[],不是()。
答案 0 :(得分:4)
扩展方法实际上只是静态方法。由于没有“静态索引器”,因此您无法使用使用索引器语法的扩展方法。
答案 1 :(得分:2)
这个静态索引器只是花花公子......
public static string GetDRItem(this IDataReader dr, string colName)
{
return dr[colName].ToString();
}