Posts
831
Practical notes on AI assistants, software architecture, and developer tooling.
Posts
831
Tags
481
Featured
0
Raymond Chen 提出了一种 System.Diagnostics.Process 的假想重构方案:把 StandardOutput 等属性移到 Start() 的返回类型里,用编译器替代运行时异常来守护 API 正确使用顺序。.NET 11 也正在落实类似思路。
Continue reading
Raymond Chen 提出了一种 System.Diagnostics.Process 的假想重构方案:把 StandardOutput 等属性移到 Start() 的返回类型里,用编译器替代运行时异常来守护 API 正确使用顺序。.NET 11 也正在落实类似思路。
DI 容器的魔法就是反射。本文从 GetConstructors → GetParameters → Resolve → Invoke 的递归循环讲起,用 55 行 C# 实现一个最小容器,再拆解 IServiceCollection 和 Scrutor 的内部机制,最后介绍源生成器如何在编译期消除反射。
GitHub Copilot 不只是代码补全。这篇来自微软 .NET 团队的指南把 Copilot 的使用面拆成 Chat(理解、规划)和 Agent(执行、验证)两类,给出 10 个真实 .NET 场景的 prompt 示例,帮你判断当前任务该用哪种模式。
用 .NET 10 从零搭建 Clean Architecture 四层项目:Domain、Application、Infrastructure、API,依赖只朝内指向核心。不用 Repository,DbContext 通过接口暴露,Aspire 一条命令编排 API 和 PostgreSQL,10 个领域单测 155ms 跑完。
责任链(Chain of Responsibility)是 GoF 行为型模式,让请求沿着处理器链依次流动,每个处理器决定是处理、转发还是短路。本文从核心组件和三种链变体入手,给出请求验证管线的完整 C# 实现,并展示 ASP.NET Core 中间件就是这个模式的框架级落地。
自定义特性是 C# 框架机制的底层基础——验证框架、MVC 路由和插件系统都依赖它。本文从 Attribute 的基础定义出发,通过验证约束、插件扫描和命令路由三个完整实例演示如何用反射读取运行时元数据,并介绍热路径下的缓存策略和源代码生成器的适用边界。
当一个 HTTP 客户端同时要处理缓存、限流、日志,单类实现很快变成难以维护的混乱代码。代理模式让每个横切关注点拥有独立的类,它们共同实现同一接口,通过依赖注入组合成调用链。本文以天气 API 客户端为例,完整演示缓存代理、限流代理、日志代理和熔断器代理的 C# 实现与组合方式。
用 IAsyncEnumerable<T> 替换 ToListAsync(),将内存从 O(n) 压到 O(1)。本文提供 4 个生产级模式(EF Core、HttpClient、文件流、ASP.NET Core Controller),以及 4 种常见坑和修复方法。
HttpContext.Connection.RemoteIpAddress 才是正确的入口,而非 Request 对象。本文从扩展方法到内置中间件,一次性讲清楚直连与代理场景下的 IP 获取方式,并附完整 C# 代码。
介绍如何在 Claude Code 中用 SKILL.md 格式创建可复用的工作流技能。涵盖 frontmatter 完整字段、参数替换、动态上下文注入、子 agent 委托,以及从 .NET 端点生成器到 skill-creator 插件的完整实操示例。适合想摆脱重复粘贴 prompt、让团队共享 AI 工作流的开发者。