4. 建议的封装规范
Natasha 封装规约
Natasha 有自己的封装规则,这可以让封装者思路更加清晰,并让作品更加容易维护。
一个完整的 Operator
Operator 作为动态构建对外使用的操作类,一个 Operator 可大致由以下 3 部分组成:
- Template
- Builder
- Package / Extension
Template + Compiler => Builder Package(Builder) + API + Extension => Operator
脚本构建器(Builder)
作为 Operator 最重要的核心部分,Builder 主要为 Operator 提供委托,可以从外部接收配置,可以在内部组合模板并进行编译。
其大致分为两部分 Template 模板与 Compiler 编译器:
- Template 构建模板
使用 Template 模板构建运行时脚本字符串,模板对外暴漏 API 以方便使用者组成编译字符串。
- UsingTemplat 是 Natasha 内置模板,提供了从命名空间到完整对象的代码构建。
- DelegateTemplate 是 Natasha 内置模板,提供了方法代码的构建。
- FieldTemplate 是 Natasha 内置模板,提供了字段代码的构建。
- PropertyTemplate 是 Natasha 内置模板,提供了属性代码的构建。
- Compiler 编译器
编译器接收模板提供的字符串并进行编译,完成 Builder 的编译任务。
- AssemblyCSharpBuilder : 使用 Natasha 的 CSharp 编译器可以轻松的完成字符串的编译和元数据的提取。
直接使用 Natasha 内置的 Builder 可以快速实现定制,例如: OopBuilder[TOperator] ,MethodBuilder[Operator] 泛型方法。 前者为其提供对象构造模板,后者专注构建方法。
操作类(Operator)
Operator 在 Builder 的基础上进行了 Package 封装,Operator 存储了 Builder 提供的编译结果,对外暴漏用户级别的 API 。