贡献指南将详细介绍和说明工具内部实现的设计思路、实现原理、开发指南等等内容,让开发者能够更深入的理解和参与到 Perigon 的开发中。
Perigon 项目主要包含以下几个部分:
基于Spectre.Console.Cli实现。在CommandLine项目中实现,通过调用CommandService来调用具体的逻辑。
AterStudio项目是基于Blazor Server实现的Web应用,在AterStudio/Components目录下包含了各个组件的实现。
组件中将通过调用Modules/StudioMod模块中的Manager来实现具体的业务逻辑。
代码生成主要依赖Roslyn实现,核心代码在Definition/CodeGenerator目录下。
目前有两种方式对实体进行解析,一是通过Roslyn对实体类进行静态解析。
另一种是通过EntityFrameworkCore.Design对数据库上下文进行建模,获取相关的信息。
通过EntityFrameworkCore.Design能够获取到更多的实体信息,包括实体的关系、属性等,这对于生成代码和前端请求非常有帮助。
关于注释,会通过XmlDocHelper来提取文档注释信息。
通过Microsoft.OpenApi对OpenApi规范进行解析,获取相关的API信息。
不同类型客户端的请求服务生成,通过继承ClientRequestBase抽象类来实现,各语言的类型解析通过继承LanguageFormatterBase来实现。
最简单和直观的方式,是直接运行AterStudio项目,它将启动Web应用,提供Studio的管理界面。
如果是CommandLine项目,直接使用dotnet run命令,携带参数即可。
内容大纲