用接口和类做函数返回类型

     如果用接口来作为方法的返回类型,在.net中很适合这样做,比如要返回一个数组,可以用Ilist接口作为返回类型,返回一个对象,这个对象拥有这个接口的所有方法。当然不需要再这个方法中把所有的方法都实现然后返回,这样就增加了工作量,起不到很好的作用。最后的办法是用已经实现了这个接口的类来实例化这个接口对象,比如 IList obj = new ArrayList();这样obj就可以使用IList接口中的所有方法。如果是返回一个数组那么使用Add()方法就好了。

    如果用类名来作为方法的返回类型,相当于在这个类中增加了一个方法,这个方法操作的是这个类中的字段。比如3层架构中经常要使用一个Model,数据实体类,主要是封装数据库每个表的每一列,为他们设置好属性。而他们的方法却在SqlServerDAL中或者ORacleDAL中,这样属性和方法分离,那么SqlServerDAL中的方法就应该以数据实体类为返回对象。

    附上petshop中的2个方法,一个是用接口作为返回对象,另一个是用类名来作为方法的返回对象。

public IList GetItemsByProduct(string productId) {//返回一个数组

            IList itemsByProduct 
= new ArrayList();

            SqlParameter parm 
= new SqlParameter(PARM_PRODUCT_ID, SqlDbType.Char, 10);
            parm.Value 
= productId;
            
            
//Execute the query against the database
            using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ITEMS_BY_PRODUCT, parm)) {
                
// Scroll through the results
                while (rdr.Read()){
                    ItemInfo item 
= new ItemInfo(rdr.GetString(0).Trim(), rdr.GetString(1), rdr.GetDecimal(2), rdr.GetString(3), null);
                    
//Add each item to the arraylist
                    itemsByProduct.Add(item);
                }

            }


            
return itemsByProduct;
        }
/// <summary>
        
/// Get an individual item based on a the unique key
        
/// </summary>
        
/// <param name="itemId">unique key</param>
        
/// <returns></returns>

        public ItemInfo GetItem(string itemId) {
            
            
//Set up a return value
            ItemInfo item = null;

            
//Create a parameter
            SqlParameter parm = new SqlParameter(PARM_ITEM_ID, SqlDbType.Char, 10);
            
//Bind the parameter
            parm.Value = itemId;

            
//Execute the query
            using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ITEM, parm)) {
                rdr.Read();
                item 
= new ItemInfo(rdr.GetString(0).Trim(), rdr.GetString(1), rdr.GetInt32(2), rdr.GetDecimal(3), rdr.GetString(4), rdr.GetString(5));
                 
            }

            
return item;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值