////////////////////////////////////////////////////////////////////////////////////////////
///
///    Copyright (C), 2002-2008, Murphy Corporation.
///    
///    FileName:        FacadeBase.cs
///    Author:            胡晓伟
///    Version:        beta
///    Description:    BizFacade Foundation Class : Basic Biz Function Class ..
///    
///                    
////////////////////////////////////////////////////////////////////////////////////////////

using System;
using System.Reflection;

using COM.Makinfo.DataAccess;
namespace COM.Makinfo.Facade
{
    
/// <summary>
    
/// FacadeBase 的摘要说明。
    
/// </summary>

    public abstract class FacadeBase:IDisposable
    
{
        
protected DBAccess[] aryDBAccess;
        
public FacadeBase()
        
{

        }

        
/// <summary>
        
/// 设置同在一个事务中的DBAccess实例。
        
/// </summary>
        
/// <param name="aryDBAccess"></param>

        protected void SetAryDBAccess(params DBAccess[] aryDBAccess)
        
{
            
this.aryDBAccess = aryDBAccess;
        }

        
/// <summary>
        
/// 运行事务处理方法。
        
/// </summary>
        
/// <param name="strMesthodeName">要运行的方法名。</param>
        
/// <param name="paramerts">方法的参数。</param>
        
/// <returns></returns>

        protected object RunCooperation(string strMesthodeName,params object[] paramerts)
        
{
            
            
try
            
{
                
//Begin cooperation work.
                BeginCooperation();

                MethodBase method    
= this.GetType().GetMethod(strMesthodeName,
                    BindingFlags.Instance
|BindingFlags.NonPublic|BindingFlags.Public);
                
object oResult        = method.Invoke(this,paramerts);

                
//Commit.
                CommitCooperation();

                
//Return value
                return oResult;
            }

            
catch(Exception ex)
            
{
                
//Rollback.
                RollbackCooperation();
                
throw ex;
            }


            
        }

        
/// <summary>
        
/// 开始事务。
        
/// </summary>

        private void BeginCooperation()
        
{
            
//Begin cooperation work.
            DBAccess.BeginCooperation(aryDBAccess);
        }

        
/// <summary>
        
/// 提交事务。
        
/// </summary>

        private void CommitCooperation()
        
{
            
//Commit.
            DBAccess.CommitCooperation(aryDBAccess);
        }

        
/// <summary>
        
/// 回滚事务。
        
/// </summary>

        private void RollbackCooperation()
        
{
            
//Rollback.
            DBAccess.RollbackCooperation(aryDBAccess);
        }

        
IDisposable 成员
    }

}

posted on 2006-07-25 20:46  胡晓伟  阅读(458)  评论(0编辑  收藏  举报