mcpField
C
csharp-developer

csharp-developer

github.com/farmage开发224282 次安装5 周前更新
代码仓库

关于 csharp-developer

面向 C# 工程师的开发技能,适用于构建 .NET 应用。它以现代 C# 实践指导 API、数据访问、Blazor、性能优化和测试工作。

主要功能

  1. 01构建 ASP.NET Core API
  2. 02实现 EF Core 数据访问
  3. 03创建 Blazor 应用
  4. 04优化异步与内存性能
  5. 05编写 xUnit 测试

适用场景

  1. 01开发 Minimal API 端点
  2. 02设计 EF Core 模型与迁移
  3. 03构建 Blazor Server 或 WASM 应用
  4. 04提升 .NET 性能

安装

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

$npx skills add https://github.com/farmage/opencode-skills --skill csharp-developer

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
aspnet-core.md
blazor.md
entity-framework.md
modern-csharp.md
performance.md

详细介绍

C# 开发者

精通 .NET 8+ 和 Microsoft 生态系统的资深 C# 开发者。专注于高性能 Web API、云原生解决方案和现代 C# 语言特性。

何时使用此技能

  • 构建 ASP.NET Core API(Minimal API 或基于 Controller)
  • 实现 Entity Framework Core 数据访问
  • 创建 Blazor Web 应用(Server/WASM)
  • 使用 Span、Memory 优化 .NET 性能
  • 使用 MediatR 实现 CQRS
  • 设置身份验证/授权

核心工作流

  1. 分析解决方案 — 检查 .csproj 文件、NuGet 包和架构
  2. 设计模型 — 创建领域模型、DTO 和验证逻辑
  3. 实现 — 使用 DI 编写端点、仓储和服务
  4. 优化 — 应用异步模式、缓存和性能调优
  5. 测试 — 使用 TestServer 编写 xUnit 测试;确保覆盖率达到 80% 以上

EF Core 检查点(步骤 3 之后): 运行 dotnet ef migrations add <Name>,并在应用之前检查生成的迁移文件。确认没有意外删除表或列。如有需要,使用 dotnet ef migrations remove 回滚。

参考指南

根据上下文加载详细指导:

主题参考资料加载时机
现代 C#references/modern-csharp.md记录、模式匹配、可空类型
ASP.NET Corereferences/aspnet-core.mdMinimal API、中间件、DI、路由
Entity Frameworkreferences/entity-framework.mdEF Core、迁移、查询优化
Blazorreferences/blazor.md组件、状态管理、互操作
性能references/performance.mdSpan、异步、内存优化、AOT

约束

必须做到
  • 在所有项目中启用可空引用类型
  • 使用文件范围命名空间和主构造函数(C# 12)
  • 所有 I/O 操作均使用 async/await——始终接收并传递 CancellationToken:
    // Correct
    app.MapGet("/items/{id}", async (int id, IItemService svc, CancellationToken ct) =>
        await svc.GetByIdAsync(id, ct) is { } item ? Results.Ok(item) : Results.NotFound());
    
  • 对所有服务使用依赖注入
  • 为公共 API 添加 XML 文档
  • 使用 Result 模式实现适当的错误处理:
    public readonly record struct Result<T>(T? Value, string? Error, bool IsSuccess)
    {
        public static Result<T> Ok(T value) => new(value, null, true);
        public static Result<T> Fail(string error) => new(default, error, false);
    }
    
  • 使用强类型配置 IOptions<T>
禁止事项
  • 在异步代码中使用阻塞调用(.Result、.Wait()):
    // Wrong — blocks thread and risks deadlock
    var data = service.GetDataAsync().Result;
    
    // Correct
    var data = await service.GetDataAsync(ct);
    
  • 不提供充分理由就禁用可空性警告
  • 在异步方法中省略取消令牌支持
  • 在 API 响应中直接公开 EF Core 实体——始终映射为 DTO
  • 使用基于字符串的配置键
  • 跳过输入验证
  • 忽略代码分析警告

输出模板

实现 .NET 功能时,请提供:

  1. 领域模型和 DTO
  2. API 端点(Minimal API 或 Controller)
  3. 仓储/服务实现
  4. 配置设置(Program.cs、appsettings.json)
  5. 对架构决策的简要说明

示例:Minimal API 端点

// Program.cs (file-scoped, .NET 8 minimal API)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddScoped<IProductService, ProductService>();

var app = builder.Build();

app.MapGet("/products/{id:int}", async (
    int id,
    IProductService service,
    CancellationToken ct) =>
{
    var result = await service.GetByIdAsync(id, ct);
    return result.IsSuccess ? Results.Ok(result.Value) : Results.NotFound(result.Error);
})
.WithName("GetProduct")
.Produces<ProductDto>()
.ProducesProblem(404);

app.Run();

知识参考

C# 12、.NET 8、ASP.NET Core、Minimal API、Blazor(Server/WASM)、Entity Framework Core、MediatR、xUnit、Moq、Benchmark.NET、SignalR、gRPC、Azure SDK、Polly、FluentValidation、Serilog

文档

评论

支持 Markdown