fengling-member-service/.github/instructions/domain-event.instructions.md

43 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
applyTo: "src/Fengling.Member.Domain/DomainEvents/*.cs"
---
# 领域事件开发指南
## 开发原则
### 必须
- **事件定义**
- 必须使用 `record` 类型。
- 必须标记接口 `IDomainEvent`,无需额外实现。
- 无额外信息传递需求时,将聚合作为构造函数参数。
- **命名规范**
- 使用过去式动词描述已发生的事情。
- 格式:`{Entity}{Action}DomainEvent`。
- 例如:`UserCreatedDomainEvent`、`OrderPaidDomainEvent`、`ProductUpdatedDomainEvent`。
### 必须不要
- **复杂逻辑**:领域事件本身不应包含业务逻辑,仅作为数据载体。
## 文件命名规则
- 类文件应放置在 `src/Fengling.Member.Domain/DomainEvents` 目录下。
- 为每个聚合添加一个领域事件文件。
- 文件名格式为 `{Aggregate}DomainEvents.cs`
- 一个领域事件文件中可以包含多个领域事件。
## 代码示例
**文件**: `src/Fengling.Member.Domain/DomainEvents/UserDomainEvents.cs`
```csharp
using Fengling.Member.Domain.Aggregates.UserAggregate;
namespace Fengling.Member.Domain.DomainEvents;
public record UserCreatedDomainEvent(User User) : IDomainEvent;
public record UserEmailChangedDomainEvent(User User) : IDomainEvent;
```