主要是数据源转换的问题,比如public class Charting
{
public DataTable DataSource
        {
            set { _dt = value; }
            get { return _dt; }
        }
public SeriesCollection SC
        {            set { _sc = value; }
            get { return _sc; }
        }
}
 Charting c = new Charting();        //c.DataSource = this.GetDataSource();//
        //c.SC = GetSC();
        c.CreateStaticPic(this.Chart1); private DataTable GetDataSource()
{
.....
  return an instance of DataTable
}
 private SeriesCollection GetSC()
{
.....
  return an instance of SeriesCollection 
}
上面我定义两种类型的数据源,能不能用一个泛型数据源,然后Charting里只定义个泛型的DataSource,既可以接收datatable类型也可以接收SeriesCollection 类型,泛型没怎么用过,熟悉的兄弟 给个大致思路,谢了

解决方案 »

  1.   

         返回T类型的值。使用的时候,给T指定一个类型就可以了。
       public static T GetOneRowOneColValue<T>( string sql)
            {
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = connString;
                conn.Open();
                SqlCommand command = new SqlCommand(sql, conn);
                command.CommandType = CommandType.Text;
                SqlDataReader ReaderTemp = command.ExecuteReader();
                if (ReaderTemp != null && ReaderTemp.HasRows)
                {
                    ReaderTemp.Read();
                    T value = (T)ReaderTemp[0];
                    return value;
                }
                else
                {
                    throw new Exception("获取单个值失败");
                }
               
            }
      

  2.   

    你这个不是用泛型来解决的,是用接口来做的public class Charting 
    {
       private IDataSource _dataSource;   public IDataSource DataSource
       {
          get
          {
              return _dataSource;
          }
          
          set
          {
              _dataSource = value;
          }
       }
        
       public Charting(IDataSource dataSource)
       {
          this._dataSource = dataSource
       }
    }IDataSource 你按自已的需要去选择,可以采用ICollection接口,更强一些的是IEnumerable
      

  3.   

    IDataSource 具体怎么写呢 报了个错无法将DataTable转换为IEnumerable类型
      

  4.   

     
       public class Charting<T>
        {
            T dataSource;
            public T DataSource
            {
                set { dataSource = value; }
                get { return dataSource; }
            }
        }
    Charting<DataTable> c= new Charting<DataTable>();
    DataTable dt = chart.DataSource;Charting<SeriesCollection> c= new Charting<SeriesCollection>();
    SeriesCollection sc = chart.DataSource;