2.5 KiB
2.5 KiB
applyTo
| applyTo |
|---|
| **/*.cs |
C# Base Instructions
Language Version Constraint
This repository targets .NET Framework 4.8 and C# 7.3.
Do not use:
- record
- init property setters
- switch expressions
- using declarations
- top-level statements
- nullable reference types
- range operators (
..) - default interface implementations
- IAsyncEnumerable
Allowed:
- async/await
- pattern matching with is / switch case patterns
- tuples
- local functions
- inline out variable declarations
- throw expressions
- ref locals and ref returns
中文说明
本项目目标框架为 .NET Framework 4.8,C# 版本固定为 7.3。
因此:
- 禁止使用 record、init、switch 表达式、using 声明、可空引用类型等 C# 8+ 特性
- 可以使用 async/await、元组、本地函数、模式匹配、内联 out 变量等 C# 7.3 支持的功能
Style Rules
- Use explicit types, not
var - Use Allman braces
- Use 4 spaces indentation
- Use CRLF line endings
- Use block-scoped namespaces
- Place using directives outside namespaces
中文说明
代码风格要求:
- 显式类型,不使用
var - 使用 Allman 大括号风格
- 4 空格缩进
- 使用 CRLF 换行
- 使用块作用域命名空间
- using 放在命名空间外
Naming Rules
- Public types, methods, properties, events: PascalCase
- Private fields: _camelCase
- Constants: PascalCase
- Interfaces: I + PascalCase
- Enums: PascalCase
中文说明
命名规范:
- 公共类型、方法、属性、事件:PascalCase
- 私有字段:
_camelCase - 常量:PascalCase
- 接口:
I+ PascalCase - 枚举:PascalCase
Constructor Injection
Prefer constructor injection with null checks.
Example:
public SafeAxisMotion(HardwareManager hardware, AlarmOperate alarmOperate)
{
_hardware = hardware ?? throw new ArgumentNullException(nameof(hardware));
_alarmOperate = alarmOperate ?? throw new ArgumentNullException(nameof(alarmOperate));
}
中文说明
依赖注入优先使用构造函数注入,并对参数进行 null 检查。 不要省略 null 防御。
Async Rules
Async methods must use Async suffix Pass CancellationToken where appropriate Do not block async code with .Result or .Wait() unless existing architecture requires it and the reason is explicit
中文说明
异步规则:
- 异步方法必须加 Async 后缀
- 需要支持取消的场景必须传 CancellationToken
- 不要随意使用 .Result 或 .Wait() 阻塞异步调用,除非现有架构明确要求且理由清晰
Code Generation Preference
Keep methods focused and readable Prefer explicit domain terminology over generic names Avoid unnecessary abstractions Match the existing repository style
中文说明
生成代码时:
- 保持方法职责清晰
- 优先使用明确的领域术语命名
- 避免不必要的抽象
- 尽量贴合现有仓库代码风格