Tag: C#
All the articles with the tag "C#".
-
Minimal API vs Controller:ASP.NET Core 中两种 API 风格怎么选
Published: at 05:54 AMMinimal API 和 Controller 是 ASP.NET Core 中两种主流 API 构建方式。本文从语法、DI、过滤器、测试、规模化组织和 .NET 10 最新改进等维度做全面对比,给出一份实用的决策矩阵,帮你根据团队和项目实际情况作出选择。
-
ASP.NET Core Web API 完全指南:请求管道、认证、错误处理到生产部署
Published: at 12:40 AM从请求管道到生产部署,系统梳理 .NET 10 中 ASP.NET Core Web API 的核心知识:中间件顺序、属性路由、JWT 认证与策略授权、ProblemDetails 错误处理、模型验证、WebApplicationFactory 集成测试以及 Docker 容器化部署。
-
.NET 10 Native AOT 下让反射保持安全:DynamicallyAccessedMembers 实用指南
Published: at 06:25 AMNative AOT 把不可达类型一并裁掉,反射在运行时就空手而归。本文按 Dev Leader 的思路梳理 IL2xxx 警告含义,演示用 [DynamicallyAccessedMembers]、[RequiresUnreferencedCode]、[RequiresDynamicCode] 把反射注解清楚,并给出 .NET 10 上的 AOT 兼容审计清单。
-
Reflection vs Source Generators:.NET 10 里选谁,看你什么时候知道类型
Published: at 12:09 AM.NET 10 里给框架级代码做类型扫描,反射和源生成器是两套答案。前者在运行时灵活但有开销、对 AOT 不友好,后者在编译期生成真实 C# 代码、零运行时开销且 AOT 友好。文章按 Dev Leader 的对比把两者并排过一遍,给出选型清单和混合用法。
-
Template Method vs Strategy:C# 里两种“变中有不变”的算法骨架取舍
Published: at 12:00 AM模板方法用继承锁住算法结构,策略模式用组合换实现,两者都能做到“主流程不变、个别步骤可换”。文章用同一个数据处理管道把两种写法拆开比一遍,并给出选型清单和组合使用的示例。
-
C# 自定义特性实战:验证、插件注册和命令路由的完整实现
Published: at 05:00 AM自定义特性是 C# 框架机制的底层基础——验证框架、MVC 路由和插件系统都依赖它。本文从 Attribute 的基础定义出发,通过验证约束、插件扫描和命令路由三个完整实例演示如何用反射读取运行时元数据,并介绍热路径下的缓存策略和源代码生成器的适用边界。
-
C# 代理模式实战:用组合叠加缓存、限流和日志
Published: at 03:40 AM当一个 HTTP 客户端同时要处理缓存、限流、日志,单类实现很快变成难以维护的混乱代码。代理模式让每个横切关注点拥有独立的类,它们共同实现同一接口,通过依赖注入组合成调用链。本文以天气 API 客户端为例,完整演示缓存代理、限流代理、日志代理和熔断器代理的 C# 实现与组合方式。
-
IAsyncEnumerable<T>:流式处理数据,不把所有东西塞进内存
Published: at 11:45 PM用 IAsyncEnumerable<T> 替换 ToListAsync(),将内存从 O(n) 压到 O(1)。本文提供 4 个生产级模式(EF Core、HttpClient、文件流、ASP.NET Core Controller),以及 4 种常见坑和修复方法。
-
在 ASP.NET Core 中获取客户端 IP 地址:直连与代理转发完整处理
Published: at 11:41 PMHttpContext.Connection.RemoteIpAddress 才是正确的入口,而非 Request 对象。本文从扩展方法到内置中间件,一次性讲清楚直连与代理场景下的 IP 获取方式,并附完整 C# 代码。