标签: #设计模式

从零实现可扩展查询条件体系:FilterOperator 策略模式 + 组合模式构建动态 SQL WHERE 子句

在业务系统中,动态构建 SQL WHERE 子句是绕不开的需求。本文以 SwitchData 项目中的 FilterOperator + IFilterNode 实现为例,剖析一套完整的可扩展查询条件体系:策略模式封装 15 种运算符的 SQL 生成逻辑,组合模式构建条件树支持 AND/OR 嵌套,递归遍历 + 参数化查询安全翻译成 SQL,还能通过 virtual 属性适配不同数据库方言。

C# 反射表达式微型 ORM:MetadataCache 元数据驱动的 CRUD 实现

本文基于 SwitchData 项目的实际代码,讲解如何从零构建一个基于反射表达式的微型 ORM。通过 MetadataCache 实现元数据驱动,使用表达式树编译强类型 Getter/Setter 委托替代反射调用,性能接近直接调用。实现 INSERT/UPDATE/DELETE 的 SQL 自动生成、ObjectMapper 对象映射、实体验证机制等完整功能,无需依赖任何第三方 ORM 框架。

C# 位运算实战:把任意 IP 段拆成最少的 CIDR 块

在 SwitchData 项目做 UPF 地址分配时遇到一个经典问题:把任意 IP 段(10.0.0.5 ~ 10.0.0.250 这种不规整的)拆成最少的 CIDR 块。本文用 UInt128 + 位运算写出一套同时支持 IPv4 和 IPv6 的通用解法,核心是 CountTrailingZeros + 贪心算法。

Mapster 高级映射实战:AfterMapping、条件映射与树形数据转换

本文从 SwitchData 项目提取三个真实场景,深入讲解 Mapster 的 AfterMapping 后映射钩子、Map 条件映射和 MapWith 自定义映射函数,最后展示如何将扁平数据一键转为树形结构。三种映射方式各有定位:Map 处理属性级类型转换,AfterMapping 处理对象级后置逻辑,MapWith 处理结构级整体变换。

C# 泛型接口显式实现:让工厂模式优雅地桥接类型差异

泛型接口IFoo<T>无法直接放进List<IFoo>,因为不同泛型参数是不同类型。本文从SwitchData项目出发,介绍如何用泛型接口显式实现(Explicit Interface Implementation)优雅地桥接泛型与非泛型世界,让工厂模式统一调度、子类享受强类型,同时集中类型转换、复用通用逻辑。

C# 表达式树深度解析:构建自定义 LINQ 条件解析器

本文深入剖析 C# 表达式树的解析机制,基于 SwitchData 项目的 ExpressionParser 实现,手把手教你构建一个将 LINQ 表达式转换为数据库查询条件的解析器。涵盖 ExpressionVisitor 访问者模式、排序解析、条件解析、逻辑分组、元数据映射、PredicateBuilder 动态组合等核心技术点。

C#/.NET 加密解密实战:RSA分块加解密、AES对称加密与哈希算法完整实现

在企业级开发中,数据安全离不开加密解密。本文从 SwitchData 项目真实代码出发,系统讲解 C#/.NET 下三大加密体系的完整实现:RSA 非对称加密(含 PEM 多格式导入、分块加解密公式、数字签名与验签、标准 Dispose 模式)、AES 对称加密(CryptoStream 管道设计、IV 随机化、密钥生成)、MD5/SHA256 哈希算法(字节流/文件/字符串多输入支持)。最后附上 RSA+AES+SHA256 混合加密实战方案与常见坑点避坑指南。