RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Configs/Cursor rules/xin-lai/CodeSpirit

Cursor rule

.cursor/rules/service.mdc

CodeSpirit 服务类开发规范 - 服务接口、实现、生命周期和依赖注入

Cursor rules

Quality

50/100

Scores the file, not the repository.

Length

245 words

6 headings · 2 code blocks

Repository

56

— · pushed 134 days ago

Last changed

3 days ago

First indexed 3 days ago.
xin-lai/CodeSpirit/.cursor/rules/service.mdcRawGitHub
1---
2description: CodeSpirit 服务类开发规范 - 服务接口、实现、生命周期和依赖注入
3globs:
4 - "*Service.cs"
5 - "**/Services/**/*.cs"
6alwaysApply: false
7---
8 
9# 服务(Service)类规则
10 
11## 基本要求
12 
131. 确保服务类实现正确的接口和基类
142. 添加构造函数注释和 XML 文档注释
153. 服务类必须实现 [BaseCRUDIService.cs](mdc:Src/CodeSpirit.Shared/Services/BaseCRUDIService.cs) 或 [BaseCRUDService.cs](mdc:Src/CodeSpirit.Shared/Services/BaseCRUDService.cs),应实现常见的查询逻辑
164. 服务接口必须实现 [IBaseCRUDIService.cs](mdc:Src/CodeSpirit.Shared/Services/IBaseCRUDIService.cs) 或 [IBaseCRUDService.cs](mdc:Src/CodeSpirit.Shared/Services/IBaseCRUDService.cs)
175. 服务类必须实现生命周期标记接口(IScopedDependency / ITransientDependency / ISingletonDependency)
18 
19## 服务类示例
20 
21```csharp
22/// <summary>
23/// 用户服务接口
24/// </summary>
25public interface IUserService : IBaseCRUDService<User, long, CreateUserDto, UpdateUserDto, UserQueryDto>
26{
27 /// <summary>
28 /// 根据用户名获取用户
29 /// </summary>
30 /// <param name="username">用户名</param>
31 /// <returns>用户信息</returns>
32 Task<UserDto> GetByUsernameAsync(string username);
33}
34 
35/// <summary>
36/// 用户服务实现
37/// </summary>
38public class UserService : BaseCRUDService<User, long, CreateUserDto, UpdateUserDto, UserQueryDto>,
39 IUserService, IScopedDependency
40{
41 /// <summary>
42 /// 初始化用户服务
43 /// </summary>
44 /// <param name="repository">用户仓储</param>
45 /// <param name="mapper">对象映射器</param>
46 public UserService(IRepository<User> repository, IMapper mapper)
47 : base(repository, mapper)
48 {
49 }
50
51 public async Task<UserDto> GetByUsernameAsync(string username)
52 {
53 // 实现逻辑
54 }
55}
56```
57 
58## 生命周期选择
59 
60- **IScopedDependency**: Scoped 生命周期(推荐大多数业务服务)
61- **ITransientDependency**: Transient 生命周期(推荐无状态工具类)
62- **ISingletonDependency**: Singleton 生命周期(推荐配置和缓存服务)
63 
64## 设置服务最佳实践
65 
66使用 `ISettingsService` 时,推荐使用 `[SettingsDto]` 特性简化 API 调用:
67 
68```csharp
69// 1. 定义设置 DTO 并添加特性
70using CodeSpirit.Settings.Attributes;
71 
72[SettingsDto("ThirdPartyLogin", "WeChat")]
73public class WeChatLoginSettingsDto
74{
75 public string AppId { get; set; } = string.Empty;
76 public string AppSecret { get; set; } = string.Empty;
77}
78 
79// 2. 在服务中使用简化 API(无需手动传入 module/key)
80public class AuthService : IScopedDependency
81{
82 private readonly ISettingsService _settingsService;
83
84 public async Task<WeChatLoginSettingsDto> GetWeChatConfigAsync(string tenantId)
85 {
86 // 简化版 API:自动从 DTO 特性获取 module/key
87 return await _settingsService.GetTenantSettingAsync<WeChatLoginSettingsDto>(tenantId)
88 ?? new WeChatLoginSettingsDto();
89 }
90
91 public async Task SaveWeChatConfigAsync(WeChatLoginSettingsDto dto, string tenantId)
92 {
93 // 简化版 API:自动从 DTO 特性获取 module/key
94 await _settingsService.SetTenantSettingAsync(dto, tenantId, "更新微信配置");
95 }
96}
97```
98 
99**优势:**
100- 类型安全,编译时检查
101- 避免模块名/配置键字符串不一致
102- 配置键集中管理,修改只需改一处
103- 反射结果自动缓存,性能优化
104 
105## 参考文件
106 
107- 服务基类: [BaseCRUDService.cs](mdc:Src/CodeSpirit.Shared/Services/BaseCRUDService.cs)
108- 服务接口: [IBaseCRUDService.cs](mdc:Src/CodeSpirit.Shared/Services/IBaseCRUDService.cs)
109- 依赖注入规范: [dependency-injection.mdc](mdc:.cursor/rules/dependency-injection.mdc)
110- 设置组件文档: [codespirit-settings-guide-zh-CN.md](mdc:Docs/03-Core-Components/codespirit-settings-guide-zh-CN.md)
111 

Sections

  • 服务(Service)类规则
  • 基本要求
  • 服务类示例
  • 生命周期选择
  • 设置服务最佳实践
  • 参考文件

Stack — with the evidence

csharp

(1.00)

react

(0.70)

typescript

(0.60)

dotnet

(0.60)

kubernetes

(0.60)

github-actions

(0.60)

javascript

(0.50)

Glob targeting

  • *Service.cs
  • **/Services/**/*.cs

Format

Cursor rules

The most expressive format here. Many small .mdc files, each with frontmatter declaring when it should load, so a rule about migrations only enters context when a migration is open. Costs the most to maintain and only one editor reads it.

What the corpus says about it

Repository

Owner
xin-lai
Language
—
License
—
Archived
no

All configs in this repo

Also in xin-lai/CodeSpirit

Diff this repo’s formats

One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?

The other instruction files in this repository
RepositoryFormatStackCoversScoreChanged
xin-lai/CodeSpirit.cursor/rules/js.mdc · 56Cursor rulescsharpreact+5apidocs46/1003 days ago
xin-lai/CodeSpirit.cursor/rules/ai-development.mdc · 56Cursor rulescsharpreact+5api46/1003 days ago
xin-lai/CodeSpirit.cursor/rules/all.mdc · 56Cursor rulescsharpreact+5testing-strategyapi50/1003 days ago
xin-lai/CodeSpirit.cursor/rules/amis-cards.mdc · 56Cursor rulescsharpreact+5no sections54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/api-design.mdc · 56Cursor rulescsharpreact+5no sections54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/controller.mdc · 56Cursor rulescsharpreact+5api54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/cs.mdc · 56Cursor rulescsharpreact+5no sections25/1003 days ago
xin-lai/CodeSpirit.cursor/rules/csproj.mdc · 56Cursor rulescsharpreact+5api54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/css.mdc · 56Cursor rulescsharpreact+5ui54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/database.mdc · 56Cursor rulescsharpreact+5no sections74/1003 days ago
xin-lai/CodeSpirit.cursor/rules/dependency-injection.mdc · 56Cursor rulescsharpreact+5api54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/dto.mdc · 56Cursor rulescsharpreact+5no sections50/1003 days ago
xin-lai/CodeSpirit.cursor/rules/enum.mdc · 56Cursor rulescsharpreact+5no sections50/1003 days ago
xin-lai/CodeSpirit.cursor/rules/i18n.mdc · 56Cursor rulescsharpreact+5no sections50/1003 days ago
xin-lai/CodeSpirit.cursor/rules/naming-conventions.mdc · 56Cursor rulescsharpreact+5no sections50/1003 days ago
xin-lai/CodeSpirit.cursor/rules/package-management.mdc · 56Cursor rulescsharpreact+5no sections74/1003 days ago
xin-lai/CodeSpirit.cursor/rules/performance.mdc · 56Cursor rulescsharpreact+5no sections54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/project-structure.mdc · 56Cursor rulescsharpreact+5api54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/security.mdc · 56Cursor rulescsharpreact+5database54/1003 days ago
xin-lai/CodeSpirit.cursor/rules/startup-framework.mdc · 56Cursor rulescsharpreact+5api54/1003 days ago
Diff against .cursor/rules/js.mdc Diff against .cursor/rules/ai-development.mdc Diff against .cursor/rules/all.mdc Diff against .cursor/rules/amis-cards.mdc Diff against .cursor/rules/api-design.mdc Diff against .cursor/rules/controller.mdc Diff against .cursor/rules/cs.mdc Diff against .cursor/rules/csproj.mdc Diff against .cursor/rules/css.mdc Diff against .cursor/rules/database.mdc Diff against .cursor/rules/dependency-injection.mdc Diff against .cursor/rules/dto.mdc Diff against .cursor/rules/enum.mdc Diff against .cursor/rules/i18n.mdc Diff against .cursor/rules/naming-conventions.mdc Diff against .cursor/rules/package-management.mdc Diff against .cursor/rules/performance.mdc Diff against .cursor/rules/project-structure.mdc Diff against .cursor/rules/security.mdc Diff against .cursor/rules/startup-framework.mdc

Similar configs

Same format, overlapping stack, ranked by quality.

Same format, overlapping stack, ranked by quality
RepositoryFormatStackCoversScoreChanged
hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126Cursor rulesgobun+5setupbuildtestlint-format+6100/1003 days ago
TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45Cursor rulestypescriptpytest+15testlint-formatstylearch+5100/1003 days ago
markstev/mark-starter.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+14setuptestlint-formatstyle+699/1003 days ago
Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+13setuptestlint-formatstyle+799/1003 days ago
deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1Cursor rulestypescriptnextjs+5setuptestlint-formatstyle+799/1003 days ago
dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+15setuptestlint-formatstyle+799/1003 days ago
langflow-ai/langflow.cursor/rules/docs_development.mdc · 153kCursor rulespythonnode+16setupbuildtestlint-format+797/1003 days ago
TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45Cursor rulestypescriptpytest+15teststyletesting-strategysecurity+397/1003 days ago
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack