对泛型的一些理解

本文探讨了.NET中泛型方法的应用,特别是在处理不同实体类时如何通过定义基类来实现方法的通用性,避免重复代码,并展示了具体的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看到很多程序员都喜欢用IList作为返回类型:实体类作为参数,泛型参数可以是值类型,也可以是引用类型,ProductInfo可以是其他对象,这我知道,可问题在这,这里放其他类型有意义吗,比如把ProductInfo改成其他的实体类,下面的很多代码还是得改啊,比如
ProductInfo product = new ProductInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4));再说每个实体类的属性肯定是不一样的。我真不知道这样传入一个实例有什么好处,如果我要用另外一个实体,或者要另外返回一个string,还不是一样要重新写过一个方法呢?

 

public IList<ProductInfo> GetProductsByCategory(string category) {
            IList
<ProductInfo> productsByCategory = new List<ProductInfo>();
            SqlParameter parm
= new SqlParameter(PARM_CATEGORY, SqlDbType.VarChar, 10);
            parm.Value
= category;
           
using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_PRODUCTS_BY_CATEGORY, parm)) {
               
while (rdr.Read()) {
                    ProductInfo product
= new ProductInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4));
                    productsByCategory.Add(product);
                }
            }

           
return productsByCategory;
        }

 

"泛"是指定义的时候,而非使用的时候。

因此如果想让上述方法实现通用。完全可以定义一个基类,自己用到的类都继承自基类BassClass

通用方法可写成:

public IList<BassClass> GetProductsByCategory(string category) {
            IList
<BassClass> productsByCategory = new List<ProductInfo>();
            SqlParameter parm
= new SqlParameter(PARM_CATEGORY, SqlDbType.VarChar, 10);
            parm.Value
= category;
           
using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_PRODUCTS_BY_CATEGORY, parm)) {
               
while (rdr.Read()) {
                    ProductInfo product
= new ProductInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4));
                    productsByCategory.Add(product);
                }
            }

           
return productsByCategory;
        }

 

 

等下试试。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值