zoukankan      html  css  js  c++  java
  • 泛型接口的定义参考

    1. 泛型接口的定义就是:
      public interface IDAL<T> where T : class
          {
              int Insert(T model);
              int Update(T model);
              int Delete(int id);
              T GetModel(int id);
              IList<T> GetList();
          }
    2. 那么在UserDAL这个继承类中就可以明确定义那个泛型的类型了,因为我这个类就是用来实现User这个实体类的(或者说数据库的表吧),这里,UserDAL我们就叫IUserDAL的客户端了。代码如下:
      public class UserDAL : IDAL<User>
          {
              #region IDAL<User> 成员
      
              public int Insert(User model)
              {
                  //coding
              }
      
              public int Update(User model)
              {
                  //coding
              }
      
              public int Delete(object id)
              {
                  //coding
              }
      
              public User GetModel(object id)
              {
                  //coding
              }
      
              public IList<User> GetList()
              {
                  //coding
              }
      
              #endregion
          }
    3.  那么用泛型的话,我们就可以为所有的BLL定义一个基类,其他类只要继承下,稍微的根据业务的不同增加点业务代码就可以,甚至都可以不用继承了,我们先看代码的实现吧,搞这行代码才是最好说话的,请看下面代码:
      public class BaseBLL<T, D>
              where T : class
              where D : IDAL<T>,new ()
          {
              private D dal = new D();
      
              public virtual int Insert(T model)
              {
                  return dal.Insert(model);
              }
      
              public virtual int Update(T model)
              {
                  return dal.Update(model);
              }
              public virtual int Delete(object id)
              {
                  return dal.Delete(id);
              }
              public virtual T GetModel(object id)
              {
                  return dal.GetModel(id);
              }
              public virtual IList<T> GetList()
              {
                  return dal.GetList(model);
              }
          }
    4. 这个也简单把,也就是把实体类换为T,把IDAL接口换为D,并定义D这个类型的约束,也就是说我的这个D一定是一个实现了IDAL<T>这个接口的,而IDAL尖括号里面的T就是BaseBLL里面的T,看到这里,相信大家都应该明白了,如果你想实现UserBLL,就可以继承BaseBLL这个基类,这里为什么把BaseBLL中的方法定义为virtual呢,原因很简单的,因为你的BLL层的其他类不可能就没有业务,不可能就是简单的调用DAL方法吧,其他的BLL类就可以根据业务去override相关的方法了,UserBLL相应代码如下:
       public class UserBLL : BaseBLL<User, UserDAL>
          {
              
           }
    5. 如果UserBLL没有任何业务的话,那就不要继承了,在UI直接用BaseBLL这个泛型类就可以,调用也很简单

             BaseBLL<User> dal=new BaseBLL<User>();这样就可以了。

  • 相关阅读:
    android中的webview白屏问题
    7-24分享
    Excel----考勤表制作自动更新日期
    (二十五)微信小程序的登陆 实际逻辑
    微信退款流程
    (二十八)加锁
    (二十七)竞价
    (二十六)拍卖专场相关的接口
    (二十六)微信小程序支付流程
    (二十四)微信小程序支付
  • 原文地址:https://www.cnblogs.com/step-city/p/5821024.html
Copyright © 2011-2022 走看看