当前位置/ List
DevNet帮助中心 >> IBLLManager接口说明
BLLManager抽象基类

发布日期:2012-08-29       浏览:4517 次
     BLLManager抽象基类实现了IBLLManager接口定义的所有方法,通过与IDataManager接口与数据层交互,并且处理异常及相关返回类型操作,并且附加方法都可以使用override重写,以实现不同项目的不同需求,做到最大的公用与通用
     对于是否应该存在逻辑层的讨论,很多人也认为可以不需要逻辑层,DAL层直接与UI层进行交互也很好,这里我不评价孰好孰坏,只阐述我个人意见,本人认为还是存在该层次为好,一方面可以处理数据层返回的数据进行整合,另一方面也可以对UI层进行相关验证等进行操作,还可以应对越来越复杂的业务逻辑,更多帮助信息请参阅 DevNet在线帮助文档
      这里列举该抽象基类的类定义和几个属性
      类定义
C# Code复制内容到剪贴板
  1. /// <summary>  
  2. /// 业务逻辑抽象基类 [作为业务逻辑层基类以提高代码复用性]  [可重写,重写时请先执行ResetError()方法以清空错误信息]  
  3. /// </summary>  
  4. /// <typeparam name="T">泛型对象 通常指数据表实体对象(请继承自EntityBase接口)</typeparam>  
  5. /// <typeparam name="TCondition">条件查询的类实体【如不需要,可以用“object”替代】</typeparam>  
  6. public abstract class BLLManager<T, TCondition> : IBLLManager<T,TCondition>  

下面是IDataManager的属性,该属性用于注入本业务逻辑层的数据交互接口对象
C# Code复制内容到剪贴板
  1. private IDataManager<T,TCondition> _dataManager;  
  2.   
  3. /// <summary>  
  4. /// 获取或设置数据层接口或数据层执行类  
  5.  /// </summary>  
  6. protected IDataManager<T, TCondition> TDALManager  
  7. {  
  8.     get  
  9.     {  
  10.         return _dataManager;  
  11.     }  
  12.     set  
  13.     {  
  14.         this._dataManager = value;  
  15.     }  
  16. }  
        
     这里再列举一个该抽象基类的实现方法
C# Code复制内容到剪贴板
  1. /// <summary>  
  2.  /// 获取一条记录实体 默认条件“=” 不存在返回null 【可重写】【重写时请先执行ResetError()方法以清空错误信息】  
  3.  /// </summary>  
  4.  /// <param name="fieldNames">条件字段</param>  
  5.  /// <param name="fieldValues">条件字段值</param>  
  6.  /// <returns></returns>  
  7.  public virtual T GetSingle(string[] fieldNames, object[] fieldValues)  
  8.  {  
  9.      //清空错误信息  
  10.      ResetError();  
  11.      try  
  12.      {  
  13.          return TDALManager.GetSingle(fieldNames, fieldValues);  
  14.      }  
  15.      catch (DevNetException ex)  
  16.      {  
  17.          ThrowDevNetException(ex);  
  18.      }  
  19.      catch (Exception ex)  
  20.      {  
  21.          ThrowException(ex);  
  22.      }  
  23.      return null;  
  24.  }  

     再看一下ResetError和异常处理的方法定义

C# Code复制内容到剪贴板
  1. /// <summary>  
  2.  /// 清空错误信息  
  3.  /// </summary>  
  4.  protected void ResetError()  
  5.   
  6. /// <summary>  
  7.  /// 写日志【可重写】  
  8.  /// </summary>  
  9.  /// <param name="msg"></param>  
  10.  /// <param name="ex">可以为null</param>  
  11.  protected virtual void WriteExceptionMsg(string msg, Exception ex)  
  12.   
  13.  /// <summary>  
  14.  /// 处理自定义异常,未写入日志【可重写】  
  15.  /// </summary>  
  16.  /// <param name="ex"></param>  
  17.  protected virtual void ThrowDevNetException(DevNetException ex)  
  18.   
  19.  /// <summary>  
  20.  /// 处理系统Exception异常,写入日志 【可重写】  
  21.  /// </summary>  
  22.  /// <param name="ex"></param>  
  23.  protected virtual void ThrowException(Exception ex)  

     其中异常处理的方法都使用虚方法,子类都可以重写,以实现自己项目业务逻辑需求