首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 委托實現 AOP 事務(三):通用委托參數與調用端控制

     編輯:關於C語言

將委托作為參數傳遞,調用端決定是否啟用事務,實現「客戶端控制」的輕量級 AOP。

核心設計

// 基類定義通用委托
public delegate void VoidDictionaryMethod(Dictionary<string, object> dict);

// 事務執行器
public void TransactionAction(Delegate action, params object[] args) {
    using (var conn = new SqlConnection(connStr)) {
        conn.Open();
        var tran = conn.BeginTransaction();
        try {
            _sqlTrans = tran;
            action.DynamicInvoke(args); // 執行業務邏輯
            tran.Commit();
        } catch {
            tran.Rollback();
        } finally {
            _sqlTrans = null;
        }
    }
}

// 調用端
var uiAction = new UserInfoAction();
var dict = new Dictionary<string, object> { {"Username","abc"}, {"Password","123"} };

// 普通調用
// uiAction.Add(dict);

// 事務調用:調用端決定
uiAction.TransactionAction(new UserInfoAction.VoidDictionaryMethod(uiAction.Add), dict);

關鍵優勢

  • 調用端控制:業務方法無感知,調用者決定是否加事務
  • 通用委托:`VoidDictionaryMethod` 適配所有 `void Method(Dictionary)` 簽名
  • 零依賴:無需 AOP 框架、無屬性裝飾、無代理生成

適用場景

  • 簡單業務邏輯的事務邊界控制
  • 舊系統無法引入完整 AOP 框架時的輕量替代
  • 測試代碼中快速切換事務行為
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved