常见场景实现完整参考
本系列文档提供常见源生成器场景的完整实现示例和最佳实践。
📋 文档信息
| 属性 | 值 |
|---|---|
| 难度 | 中级到高级 |
| 阅读时间 | 90 分钟 |
| 前置知识 | 源生成器基础、Roslyn API |
| 相关文档 | 代码生成 API、语义模型 API |
🎯 学习目标
完成本系列文档后,你将能够:
- ✅ 实现序列化生成器
- ✅ 创建 ORM 映射生成器
- ✅ 构建依赖注入生成器
- ✅ 开发日志生成器
- ✅ 实现 API 客户端生成器
📚 文档列表
本系列文档分为以下几个部分:
| 文档 | 说明 | 难度 |
|---|---|---|
| 代码生成场景 | 序列化、Builder 模式、ToString 生成器 | 中级 |
| 代码分析场景 | 代码质量分析、性能分析、安全分析 | 高级 |
| 代码转换场景 | 代码重构、迁移、优化 | 高级 |
🚀 快速开始
简单的序列化生成器
csharp
[Generator]
public class JsonSerializerGenerator : IIncrementalGenerator
{
public void Initialize(IncrementalGeneratorInitializationContext context)
{
// 查找标记了特性的类
var classes = context.SyntaxProvider
.ForAttributeWithMetadataName(
"JsonSerializableAttribute",
predicate: (node, _) => node is ClassDeclarationSyntax,
transform: (ctx, _) => GetClassInfo(ctx))
.Where(x => x != null);
// 生成代码
context.RegisterSourceOutput(classes, (spc, classInfo) =>
{
var code = GenerateSerializerCode(classInfo);
spc.AddSource($"{classInfo.Name}_Serializer.g.cs", code);
});
}
}📊 场景分类
代码生成场景
- 序列化生成器 - 自动生成 JSON/XML 序列化代码
- Builder 模式生成器 - 为类生成流畅的 Builder API
- ToString 生成器 - 自动生成格式化的 ToString 方法
- ORM 映射生成器 - 生成数据库映射代码
代码分析场景
- 代码质量分析 - 检测代码异味和反模式
- 性能分析 - 识别性能瓶颈
- 安全分析 - 检测安全漏洞
代码转换场景
- 代码重构 - 自动化重构操作
- API 迁移 - 辅助 API 版本迁移
- 代码优化 - 自动优化代码
🔗 相关资源
🚀 下一步
最后更新: 2026-02-06