where T : new()

来源:互联网 发布:ubuntu解压缩软件 编辑:程序博客网 时间:2024/04/29 18:14

例:

        /// <summary>
        /// 返回实体类的泛型列表
        /// </summary>
        /// <typeparam name="T">实体</typeparam>
        /// <param name="SqlTxt">SQL语句</param>
        /// <param name="paras">参数</param>
        /// <returns></returns>
        public virtual List<T> GetInfoListBySqlTxt<T>(string SqlTxt, SqlParameter[] paras) where T : new()
        {
            try
            {

                List<T> ts = new List<T>();
                T t = new T();
                Type type = t.GetType();
                PropertyInfo[] pInfos = type.GetProperties();
                using (SqlConnection Connection = new SqlConnection(getSqlStr))
                {
                    Open(Connection);
                    using (SqlDataReader sdr = CreateSqlCommand(SqlTxt, paras, Connection).ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        while (sdr.Read())
                        {
                            T data = new T();
                            for (int i = 0; i < sdr.FieldCount; i++)
                            {
                                string paraName = sdr.GetName(i);
                                foreach (PropertyInfo pInfo in pInfos)
                                {
                                    if (string.Compare(pInfo.Name, paraName, true) == 0)
                                    {
                                        pInfo.SetValue(data, DBNull.Value == sdr[i] ? null : sdr[i], null);
                                        break;
                                    }
                                }
                            }
                            ts.Add(data);
                        }
                    }
                }
                return ts;

            }
            catch (Exception ex)
            {

                DebugMessage = ex.ToString();
                if (IsDebugException)
                    throw new ArgumentNullException(DebugMessage);

                return null;

            }
        }