首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用相同的代码从DataRow或DataReader读取?

要使用相同的代码从DataRow或DataReader读取,您可以使用泛型方法和接口。首先,创建一个接口,该接口定义了从DataRow或DataReader读取数据的方法。然后,为DataRow和DataReader创建实现该接口的泛型类。最后,使用泛型方法处理这两种类型的数据。

  1. 定义接口:public interface IDataReader<T> { T GetValue(string columnName); }
  2. 为DataRow和DataReader创建实现接口的类:public class DataRowReader<T> : IDataReader<T> { private readonly DataRow _dataRow; public DataRowReader(DataRow dataRow) { _dataRow = dataRow; } public T GetValue(string columnName) { return _dataRow.Field<T>(columnName); } } public class DataReaderReader<T> : IDataReader<T> { private readonly IDataReader _dataReader; public DataReaderReader(IDataReader dataReader) { _dataReader = dataReader; } public T GetValue(string columnName) { return _dataReader.GetValue<T>(columnName); } }
  3. 使用泛型方法处理DataRow和DataReader:public T ReadValue<T>(IDataReader<T> dataReader, string columnName) { return dataReader.GetValue(columnName); }

现在,您可以使用相同的代码从DataRow或DataReader读取数据,如下所示:

代码语言:csharp
复制
DataTable dataTable = GetDataTable();
DataRow dataRow = dataTable.Rows[0];
IDataReader<string> dataRowReader = new DataRowReader<string>(dataRow);
string valueFromDataRow = ReadValue(dataRowReader, "ColumnName");

using (IDataReader dataReader = GetDataReader())
{
    IDataReader<string> dataReaderReader = new DataReaderReader<string>(dataReader);
    string valueFromDataReader = ReadValue(dataReaderReader, "ColumnName");
}

这种方法允许您使用相同的代码从DataRow或DataReader读取数据,同时保持代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java泛型01 : 泛型简介、泛型由来、入门示例和其他说明

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。  在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做 显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况 ,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。  泛型的好处:使用泛型,首先可以通过IDE进行代码类型初步检查,然后在编译阶段进行编译类型检查,以保证类型转换的安全性;并且所有的强制转换都是自动和隐式的,可以提高代码的重用率。

02
领券