mcpField
D
dotnet-best-practices

dotnet-best-practices

github.com/github开发40.5k15.8k 次安装今天更新
代码仓库

关于 dotnet-best-practices

面向 .NET/C# 项目的编码规范技能,帮助开发者按项目要求检查和编写代码。涵盖架构、依赖注入、异步、测试、安全与 AI 集成实践。

主要功能

  1. 01XML 文档注释与命名空间规范
  2. 02依赖注入与服务注册
  3. 03异步处理和异常管理
  4. 04MSTest、FluentAssertions 与 Moq 测试
  5. 05配置验证与本地化资源
  6. 06Semantic Kernel 与安全编码

适用场景

  1. 01为公共类型和成员补充文档
  2. 02检查服务依赖和生命周期设计
  3. 03完善异步代码及异常处理
  4. 04为配置、测试或 AI 集成制定实现方案

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/github/awesome-copilot --skill dotnet-best-practices

安装后在 Claude Code 中输入/dotnet-best-practices确认已加载。

详细介绍

.NET/C# 最佳实践

你的任务是确保 ${selection} 中的 .NET/C# 代码符合此解决方案/项目特定的最佳实践。这包括:

文档与结构

  • 为所有公共类、接口、方法和属性创建全面的 XML 文档注释
  • 在 XML 注释中包含参数说明和返回值说明
  • 遵循既定的命名空间结构:{Core|Console|App|Service}.{Feature}

设计模式与架构

  • 使用主构造函数语法进行依赖注入(例如 public class MyClass(IDependency dependency))
  • 使用泛型基类实现命令处理程序模式(例如 CommandHandler<TOptions>)
  • 使用接口隔离和清晰的命名约定(接口以 'I' 为前缀)
  • 对复杂对象创建遵循工厂模式。

依赖注入与服务

  • 使用构造函数依赖注入,并通过 ArgumentNullException 进行 null 检查
  • 以适当的生存期(Singleton、Scoped、Transient)注册服务
  • 使用 Microsoft.Extensions.DependencyInjection 模式
  • 为实现可测试性而实现服务接口

资源管理与本地化

  • 使用 ResourceManager 处理本地化消息和错误字符串
  • 分离 LogMessages 和 ErrorMessages 资源文件
  • 通过 _resourceManager.GetString("MessageKey") 访问资源

Async/Await 模式

  • 对所有 I/O 操作和长时间运行的任务使用 async/await
  • 从异步方法返回 Task 或 Task
  • 在适当的地方使用 ConfigureAwait(false)
  • 正确处理异步异常

测试标准

  • 使用 MSTest 框架,并使用 FluentAssertions 进行断言
  • 遵循 AAA 模式(Arrange、Act、Assert)
  • 使用 Moq 模拟依赖项
  • 同时测试成功和失败场景
  • 包含 null 参数验证测试

配置与设置

  • 使用带数据注释的强类型配置类
  • 实现验证特性(Required、NotEmptyOrWhitespace)
  • 使用 IConfiguration 绑定进行设置
  • 支持 appsettings.json 配置文件

Semantic Kernel 与 AI 集成

  • 使用 Microsoft.SemanticKernel 进行 AI 操作
  • 实现正确的内核配置和服务注册
  • 处理 AI 模型设置(ChatCompletion、Embedding 等)
  • 使用结构化输出模式以获得可靠的 AI 响应

错误处理与日志记录

  • 使用 Microsoft.Extensions.Logging 进行结构化日志记录
  • 包含具有有意义上下文的作用域日志记录
  • 抛出带有描述性消息的特定异常
  • 对预期的失败场景使用 try-catch 块

性能与安全性

  • 在适用的情况下使用 C# 12+ 特性和 .NET 8 优化
  • 实现正确的输入验证和清理
  • 对数据库操作使用参数化查询
  • 对 AI/ML 操作遵循安全编码实践

代码质量

  • 确保符合 SOLID 原则
  • 通过基类和实用工具避免代码重复
  • 使用反映领域概念的有意义名称
  • 保持方法专注且内聚
  • 为资源实现正确的释放模式

评论

支持 Markdown