5 分钟入门
本指南带你从零创建一个带 AOP 拦截、GraphQL 暴露的领域服务。
前置条件
- .NET 10 SDK
- NuGet 包引用
TKWF.Domain+ 对应传输层包
第一步:安装 NuGet 包
dotnet add package TKWF.Domain
dotnet add package TKWF.Domain.ApiService.HotChocolate # GraphQL
dotnet add package TKWF.Domain.Web # Web 集成
第二步:实现用户信息
// Domain/AppUserInfo.cs
public class AppUserInfo : IUserInfo
{
public string UserName { get; set; } = "";
public string DisplayName { get; set; } = "";
public string? Email { get; set; }
public List<string> Roles { get; set; } = new();
}
第三步:编写领域服务
// Domain/Services/GreetingService.cs
[GenerateController] // ← 触发 SG#4 代码生成
public class GreetingService(
DomainUser<AppUserInfo> user) // ← DomainUser 自持实例化
: DomainServiceBase<AppUserInfo>(user)
{
public async Task<string> SayHelloAsync(string name)
{
var currentUser = User.UserInfo.UserName;
return $"Hello {name}! (from {currentUser})";
}
}
[GenerateController]只需一个标注,SG 自动生成控制器、接口、Resolver。无需手写 Controller。
第四步:配置主机
// Program.cs
builder.ConfigWebAppDomain<AppUserInfo, AppDomainInitializer>()
.UseWebSession()
.UseGraphQLApiService<AppUserInfo>()
.Build();
app.Run();
第五步:查询
query {
sayHello(name: "World")
}
返回:
{
"data": {
"sayHello": "Hello World! (from admin)"
}
}
你刚刚完成了什么?
| 步骤 | 自动生成的内容 |
|---|---|
[GenerateController] |
AOP 控制器接口 + 装饰器 |
| 主机配置 | Session 中间件 + GraphQL 端点 |
| 客户端使用 | 自动生成 Resolver,无需手写 |