比如有
//简单的业务对象类
public class A
{...}
public class B
{...}在数据访问层中想增加1个方法:
public abstract class SqlHelper
{
  ...
  
  //根据SQL语句和自己定义的一个方法,返回对象集合 
  public static List<T> GetBoList(string Sql, AddMethod method)
  {
     ...
  }
  

解决方案 »

  1.   

    数据容器用一个单例模式的数据池来实现,以HASHTABLE或泛型为基础,但要保证池中的数据与数据库保持一致.
      

  2.   

     //定义1个方法类型。result:返回的字典数据result;输入的是dr
            public delegate void ToDict(SqlDataReader dr, Dictionary<string, object> result);        public static void GetDictionary(string cmdText, Dictionary<string, object> result, ToDict d)
            {
                SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(SqlCnStr);
                try
                {
                    PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, null);
                    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    result.Clear();
                    //ToDict = new ToDict(rdr, result);
                    while (rdr.Read())
                    {
                        d(rdr, result);
                    }
                    conn.Close();
                }
                catch
                { 
                    conn.Close();
                    throw;
                }
            }好象不行
      

  3.   

    谁能给个范型委托 的例子实现:
    遍历一张表的时候将SqlDataReader中的数据 根据自己定义的方法:
    public delegate void AddMethod(SqlDataReader dr, List<T>  result)得到自己需要的业务对象的集合列表啊!
      

  4.   

    老张,我C#好久没接触了。最近看了3。0的规范,写了以下的范性,不知是否是你需要的。
    //数据访问层 Data Access Level
            public abstract class Dal<T>
            {
                public delegate T CreateBoMethod(SqlDataReader rdr);            public static List<T> GetList(string cmdText, CreateBoMethod method)
                {
                    SqlDataReader rdr = MsSqlHelper.ExecuteReader(cmdText);
                    List<T> result = new List<T>();
                    while (rdr.Read())
                    {
                        T Bo = method(rdr);
                        result.Add(Bo);
                    }
                    return result;
                }            public static Dictionary<string, T> GetDictionary(string cmdText, CreateBoMethod method)
                {
                    SqlDataReader rdr = MsSqlHelper.ExecuteReader(cmdText);
                    Dictionary<string, T> result = new Dictionary<string, T>();
                    while (rdr.Read())
                    {
                        T Bo = method(rdr);
                        string key = rdr["ZID"].ToString();
                        result.Add(key, Bo);
                    }
                    return result;
                }
            }
      

  5.   

    谢谢 liwenyang1118。代码调试通过。揭贴。