日期:2014-05-18  浏览次数:20788 次

参数类型为DataRow和SqlDataReader,如果把它改成泛型。
1、
 public string ReadArticleField(SqlDataReader sdr, string Template)
  {
2、
 public string ReadArticleField(DataRow sdr, string Template)
  {
========
有这么两个方法,里面的代码都是一样的,只是参数不一样,一个是DataRow,一个是SqlDataReader。
现在有多个地方需要调用这个方法来实现读取表字段值。如sdr["title"].ToString()。

不想去复制多个方法以适用不同的类型,所以想到用泛型,不知如果用泛型的话要怎么实现
public class Test<T> : BaseClass
  {
  public string ReadArticleField(T sdr, string Template)
  {
retrun sdr["title"].ToString();
}
}
=========
用上面这个方法时提示“无法将带 [] 的索引应用于“T”类型的表达式”

请教大家。谢谢

------解决方案--------------------
那你还不如将sdr["title"]作为参数传入呢
public string ReadArticleField(objcet sdr, string Template)
使用
ReadArticleField(xxx["title"],xxx)
------解决方案--------------------
泛型的概念其实就是在设计时不需要关系具体类型。
但是看你的需求,其实还是需要关系具体类型的,所以用泛型并不适合。