系列前四篇奠定了 DAL、Repository、Query Object 等基礎設施。讀者反饋 (感謝 金色海洋、Virus) 指出:BLL 仍需大量手工編寫驗證、狀態追蹤、映射代碼,成為開發瓶頸。本篇提出核心改進:**業務邏輯類圖形化配置器**,以拖拉拽/屬性網格生成 C# 代碼,再以 partial class 分離手工擴充,實現「光速開發」。

AdoDotNetProvider / LinqProvider / EntityFrameworkProvider (對應前文 DAL 系列)。DataTable / DataEntity (LINQ/EF 實體),感謝兩位讀者建議加入 DataTable 選項。MS_Product),支援多實體組合映射。
UnitPrice)。MS_Product.Price)。
NotNull、Range、Regex、CustomDelegate 等規則類型。Range(0, 99999)) 並序列化至配置。
// 自動生成檔:Product.Generated.cs (不可手改)
public partial class Product : BusinessBase
{
private decimal _unitPrice;
[DataMapping("MS_Product.Price")]
[Validation(typeof(NotNullValidator))]
[Validation(typeof(RangeValidator), 0, 99999)]
public decimal UnitPrice
{
get => _unitPrice;
set => SetProperty(ref _unitPrice, value, "UnitPrice");
}
// ... 其他屬性、DataProvider 初始化、Mapping 註冊
}
// 手工擴充檔:Product.cs (開發者維護)
public partial class Product
{
public decimal CalculateDiscountedPrice(decimal discountRate)
{
// 核心業務邏輯,生成器無法覆蓋
return UnitPrice * (1 - discountRate);
}
}
| 模組 | 關鍵技術 |
|---|---|
| 配置器宿主 | VS Package / VSIX 擴充套件,整合方案總管右鍵菜單 |
| UI 框架 | WPF PropertyGrid + 自定義屬性編輯器 (驗證規則集合編輯器) |
| 模板引擎 | T4 (Text Template Transformation Toolkit) 預處理模板 |
| 配置持久化 | 專案目錄 .bllconfig XML,納入版控 |
| 映射執行器 | 運行期反射讀取 [DataMapping] 屬性,配合 Provider 實現雙向映射 |