本文从 SwitchData 项目源码出发,手把手拆解一个生产可用的 C# Telnet 客户端。核心亮点:Telnet 协议状态机解析器(逐字节处理 IAC/DO/WILL/SB/SE 协商)、SemaphoreSlim 双锁全双工设计、复用 Encoder 解决 UTF-8 多字节截断、IAsyncDisposable 异步资源管理。附带实战踩坑:登录残留清除、VT100 控制序列过滤、ORDP 网关并发限流。
分类: 教程
接口审计日志选中间件还是 ActionFilter?中间件拿不到绑定后的参数和返回值,IAsyncActionFilter 正好卡在两者之间。本文基于真实项目代码,拆解 DisplayAttribute 生成双语操作名、入参敏感字段脱敏、出参反射递归截断、fire-and-forget 异步落库四大实现要点,并总结未观察异常、白名单跳过等踩坑细节。
解析华为 DNS 设备导出的 BIND 配置包:named.conf 三级级联解析提取 View 与 Zone,RFC 1035 master file 的 $TTL/$ORIGIN 与 owner 继承规则需要跨行状态机处理,配合手写 Span 分词器应对注释与引号,最后用有界 Channel 背压把解析与批量入库解耦。完整 C# 实战代码与踩坑经验分享。
枚举转中文描述是业务系统刚需,但每次 ToString 加反射读 DescriptionAttribute 会拖慢高频接口。本文基于 SwitchData 项目的 EnumExtensions 实现,拆解泛型静态类 EnumCache<T> 的独立静态字段缓存原理、.NET 8 FrozenDictionary 的读优化特性,以及 (MyEnum)999 未定义枚举值的防御式处理,让枚举反射只跑一次。
System.Text.Json 默认行为无法满足统一日期格式、字符串自动 Trim、DataTable 序列化等业务需求。本文基于真实项目实现,完整讲解 JsonConverter 基础写法、可空类型转换陷阱、DataTable 与 Newtonsoft 桥接、JsonConverterFactory 工厂模式,并总结六大常见踩坑点。
在电信行业网络运维中,Telnet 协议直连网元是一个非常实用但容易被忽视的技术方案。本文从 SwitchData 项目出发,完整拆解一套生产级 ORDP 直连架构:SemaphoreSlim 并发限流保护网关单点、VT100+NUL+命令回显三重协议清洗、IAsyncDisposable 异步资源管理、Try-Catch 整体回退第三方平台。附带 TelnetClient.ClearPendingText、ExpectedCommandPromptCount 多阶段提示符等多个实战踩坑经验。
DataTable 用得多了就会发现,所有项目都在重复这些操作:去空行、Trim 字符串、列名/索引互查、Schema 克隆、DataRow 转 Dictionary、ToSortedTable、FirtRowToColumnName。本文基于 SwitchData 项目中真实在用的 DataTableExtensions(1700+ 行),把高频数据后处理操作整理成统一的扩展方法工具集,涵盖倒序遍历、Span 零分配清洗、CloneSchema/CopyData 投影、SplitColumn/MergeColumns/FillDownColumns 复杂业务转换等完整实现。
本文从真实项目代码出发,带你从零实现一个完整的 C# Telnet 协议客户端。我们会拆开 Telnet 协议的每一个字节——IAC 转义、DO/DONT/WILL/WONT 协商、SB/SE 子协商、终端类型(VT100)握手、窗口大小声明——然后用一个有限状态机把它们串起来,最后用 SemaphoreSlim 保证异步读写的线程安全。完整代码来自生产环境,已稳定跑了一年多。
Web API 有基类+多子类的继承体系(如 ReviewBase 派生 Excel/TXT/Database 三种导入请求),Swagger 默认只展示基类导致前端看不到子类字段。本文介绍用 System.Text.Json 的 JsonPolymorphic + JsonDerivedType 特性让运行时支持多态,再配合 Swashbuckle 的 UseOneOfForPolymorphism 自动生成 OpenAPI oneOf Schema,以及手动 DocumentFilter 和自定义 OperationFilter 两种备用方案,让 Swagger UI 直接展示子类下拉选择。
EF Core 是怎么把 LINQ 翻译成 SQL 的?答案是表达式树。本文从 SwitchData 项目中 462 行的 ExpressionParser 真实代码出发,展示手写 ORM 如何把 Where/OrderBy Lambda 翻译成结构化 QueryCondition 列表:排序解析沿方法调用链向内剥离,条件解析基于 ExpressionVisitor 深度优先遍历并还原括号语义,还包含闭包变量提取、string.Contains 转 LIKE、PredicateBuilder 动态组合等核心难点的完整实现。
1 / 4
下一页