Modelina CSharpGenerator生成类时如何添加继承及额外依赖
两个需求均可以通过工具原生能力实现,无需修改工具源码。
为生成类添加继承关系
你期望的public class UserCreated: IEvent格式输出完全支持,有两种常用实现方式:
- 全局统一继承:编写自定义生成预设,重写类签名渲染逻辑,在工具默认生成的类签名后追加继承声明即可,该方式不会破坏工具自动生成的属性、数据注解、序列化相关逻辑。核心实现参考:
import { CSharpGenerator } from '@asyncapi/modelina'; const eventInheritPreset = { class: { renderClassSignature({ renderer }) { const defaultSignature = renderer.defaultRenderClassSignature(); return defaultSignature.replace(/(public class \w+)/, '$1 : IEvent'); } } }; const generator = new CSharpGenerator({ presets: [eventInheritPreset] });
- 按模型指定继承:如果不需要所有生成类都继承
IEvent,可以在AsyncAPI文档的对应模型上添加C#专属扩展标记,在预设中读取标记值动态拼接继承关系,即可实现不同类继承不同父类/接口的效果。
最新稳定版本已内置继承配置能力,直接在模型的C#扩展字段中配置要继承的类型即可,无需手动编写字符串替换逻辑,工具会自动处理类签名的拼接。
添加额外依赖项
工具完全支持追加自动生成逻辑以外的额外依赖:
- 全局公共依赖:如果所有生成文件都需要引入固定命名空间(比如
IEvent接口所在的命名空间),可直接在生成器初始化配置中设置默认导入项,工具生成代码时会自动在所有文件头部添加对应的using语句。 - 单模型专属依赖:可以结合模型上的自定义扩展标记,在预设的文件渲染阶段判断当前模型所需的依赖,按需追加对应的
using语句,避免给无相关需求的文件引入多余依赖。
内容的提问来源于stack exchange,提问作者Raajkumar
相关产品推荐
相关产品推荐

