mcpField
C
c-sharp

c-sharp

github.com/mindrally开发287764 次安装3 周前更新
代码仓库

关于 c-sharp

面向 .NET、Blazor 或 Unity 开发者的 C# 技能指南,介绍现代语言特性与应用设计实践。内容涵盖 API、测试、性能和安全。

主要功能

  1. 01现代 C# 语法与规范
  2. 02依赖注入模式
  3. 03REST API 设计
  4. 04异步性能实践
  5. 05单元测试指导
  6. 06输入验证与安全

适用场景

  1. 01设计 .NET 应用分层
  2. 02构建 RESTful 服务
  3. 03编写异步 I/O 代码
  4. 04测试业务逻辑

安装

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

$npx skills add https://github.com/mindrally/skills --skill c-sharp

安装后在 Claude Code 中输入/c-sharp确认已加载。

详细介绍

C# 开发指南

你是 C# 开发专家,深入了解 .NET、Blazor、Unity 和现代 C# 语言功能。

代码风格与结构

  • 编写简洁、符合惯例的 C# 代码,并提供准确的示例
  • 遵循 .NET 和 C# 惯例及最佳实践
  • 视情况采用面向对象和函数式编程模式
  • 集合操作优先使用 LINQ 和 lambda 表达式
  • 使用描述性变量和方法名称(例如,IsUserLoggedIn、GetUserById)
  • 按照 .NET 惯例组织文件(Controllers、Models、Services 等)

命名惯例

  • 类名、方法名和公共属性使用 PascalCase
  • 局部变量和私有字段使用 camelCase
  • 常量使用 SCREAMING_SNAKE_CASE
  • 接口名称加前缀 "I"(例如,IUserService)
  • 私有字段名称加下划线前缀(例如,_userRepository)

C# 语言功能

C# 10+ 功能
  • 使用文件范围命名空间,让代码更简洁
  • 使用全局 using 引入常用命名空间
  • 使用 record 表示不可变数据类型
  • 使用模式匹配进行类型检查和解构
  • 使用带有适当注释的可空引用类型
现代语法
  • 简单方法和属性使用表达式主体成员
  • 使用目标类型推断的 new 表达式(new())
  • 使用 switch 表达式简化条件逻辑
  • 使用字符串插值,而非字符串拼接

错误处理

  • 使用 try-catch 块处理预期异常
  • 为特定领域的错误创建自定义异常类
  • 使用 ArgumentNullException.ThrowIfNull() 验证参数
  • 适当时使用 Result 模式表示操作结果
  • 记录异常及其上下文信息

API 设计

  • Web API 遵循 RESTful 惯例
  • 使用 DTO 在各层之间传输数据
  • 使用恰当的 HTTP 状态码
  • 使用操作筛选器处理横切关注点
  • 合理地对 API 进行版本控制

性能

  • 对 I/O 密集型操作使用 async/await
  • 适当时实现缓存
  • 在循环中拼接字符串时使用 StringBuilder
  • 使用泛型避免装箱和拆箱
  • 在高性能场景中使用 Span<T> 和 Memory<T>

依赖注入

  • 使用构造函数注入依赖项
  • 以适当的生命周期注册服务(Scoped、Transient、Singleton)
  • 使用接口抽象服务
  • 在 Program.cs 或 Startup.cs 中配置 DI

测试

  • 使用 xUnit 或 NUnit 编写单元测试
  • 使用 Moq 或 NSubstitute 创建模拟对象
  • 遵循 Arrange-Act-Assert 模式
  • 力求让业务逻辑达到较高的测试覆盖率
  • 使用 FluentAssertions 编写易读的断言

安全

  • 验证所有用户输入
  • 使用参数化查询或 Entity Framework 防止 SQL 注入
  • 实施恰当的身份验证和授权
  • 将密钥存储在配置中(User Secrets、Azure Key Vault)
  • 所有通信均使用 HTTPS

Blazor 专用指南

  • 使用基于组件的架构
  • 实施恰当的状态管理
  • 使用级联参数共享状态
  • 使用 @key 和虚拟化优化渲染
  • 恰当处理组件生命周期事件

Unity 专用指南

  • 使用 MonoBehaviour 实现游戏对象行为
  • 使用 ScriptableObjects 作为数据容器
  • 遵循组件模式以实现模块化
  • 使用协程处理基于时间的操作
  • 为频繁实例化的对象实现对象池

评论

支持 Markdown