Tag: CSharp
All the articles with the tag "CSharp".
-
用 C# 实现责任链模式:5 步写出生产级审批链
Published: at 11:12 PM以采购审批为例,分步演示 C# 责任链模式的接口 vs 抽象类选型、具体处理器编写、Builder 链构建、DI 容器集成和日志诊断,附常见踩坑点。
-
重新设计 System.Diagnostics.Process:用类型系统消除「只有启动者才能用」的陷阱
Published: at 12:43 AMRaymond Chen 提出了一种 System.Diagnostics.Process 的假想重构方案:把 StandardOutput 等属性移到 Start() 的返回类型里,用编译器替代运行时异常来守护 API 正确使用顺序。.NET 11 也正在落实类似思路。
-
DI 容器内部怎么用反射:从 55 行手写容器到 IServiceCollection
Published: at 12:23 AMDI 容器的魔法就是反射。本文从 GetConstructors → GetParameters → Resolve → Invoke 的递归循环讲起,用 55 行 C# 实现一个最小容器,再拆解 IServiceCollection 和 Scrutor 的内部机制,最后介绍源生成器如何在编译期消除反射。
-
C# 责任链设计模式:完整指南与示例
Published: at 12:20 PM责任链(Chain of Responsibility)是 GoF 行为型模式,让请求沿着处理器链依次流动,每个处理器决定是处理、转发还是短路。本文从核心组件和三种链变体入手,给出请求验证管线的完整 C# 实现,并展示 ASP.NET Core 中间件就是这个模式的框架级落地。
-
.NET 10 反射性能:先缓存,再编译,再测量
Published: at 12:09 AMDev Leader 这篇文章把 .NET 10 里的反射性能拆开讲清楚:慢的通常是成员查找和 late-bound invocation,优化顺序是缓存 PropertyInfo、使用 FrozenDictionary、编译 delegate、必要时使用 UnsafeAccessor,并用 BenchmarkDotNet 验证。
-
C# 16 的 unsafe 要变成可审查的安全契约
Published: at 11:57 PMMicrosoft 正在改进 C# 的内存安全模型,计划让 unsafe 从指针语法标记扩展成可传播、可记录、可审查的调用方契约。新模型预计在 .NET 11 预览,在 .NET 12 进入生产发布。
-
C# 封闭层次结构提案:用 closed 修饰符终结 switch 默认分支
Published: at 05:22 AMC# 语言设计团队正在提案一个新的 closed 修饰符,允许将类声明为封闭层次结构,把继承限制在同一程序集内。一旦穷举了所有派生类,switch 表达式就不再需要 default 分支,同时编译器也能更精准地检查类型转换的有效性。
-
别再用 DateTime.Now:用 TimeProvider 让 .NET 代码可测试
Published: at 09:13 AM几乎每个 .NET 项目都有同一个隐患:DateTime.Now 散落在服务、验证器和业务规则里。表面无害,实际上让时间相关逻辑无法正确测试。本文介绍两种解决方案——自定义 IDateTimeProvider 接口和 .NET 8 内置的 TimeProvider——让时间成为可注入的依赖,配合 FakeTimeProvider 轻松测试订阅到期、试用结束等真实场景。