CodeGen编写自定义表达式标记
CodeGen支持开发人员通过编写plug-in modules插件模块来定义自定义表达式标记的能力,以提供与这些标记相关联的逻辑。这种plug-in modules插件机制的实现方式不需要开发人员编辑核心CodeGen源文件。这一点很重要,因为这意味着它不会妨碍将来将源代码更新下载到核心CodeGen环境的能力。
编写自定义表达式标记
类在程序集表达式中实现为自定义表达式。为了实现自定义表达式标记,开发人员创建一个包含一个或多个扩展类的类库程序集,并将该库与其他CodeGen程序集一起放入主CodeGen文件夹。
如果希望从其他位置加载自定义扩展,则可以将环境变量CODEGEN_EXTDIR设置为自定义令牌扩展程序集的位置。
当CodeGen加载时,它将检查是否有任何自定义标记程序集,如果找到任何自定义标记程序集,它将动态加载它们。为了实现这一点,使用了命名约定。任何自定义扩展程序集的名称必须以单词“custom”开头。例如,您可以选择创建一个名为自定义CustomTokens.dll。
实现自定义表达式标记的每个类,都必须实现接口CodeGen.Engine.IExpressionToken可以通过添加对代码CodeGenEngine.dll汇编库。
源代码示例
CodeGen源代码包包括一个名为CustomExtensionsExample的示例项目,其中包含实现所有类型的自定义表达式标记的示例。此项目被配置为在生成主解决方案时不生成,只是一个示例。鼓励开发人员在单独的解决方案中开发自定义表达式处理器。
下面的代码显示了自定义字段循环表达式标记的示例:
import System
import System.Collections.Generic
import CodeGen.Engine
import CodeGen.RepositoryAPI
namespace CustomExtensionsExample
;;To implement a custom expression you must build a class that implements the
;;CodeGen.Engine.IExpressionToken interface. The class MUST have a default constructor.
;;By default classes have an implicit default constructor, but if you need to
;;explicitly define a constructor, make sure you don’t define any parameters.
;;
;;You can use this expression in field loops, like this:
;;
;; <FIELD_LOOP>
;; If you see YES then the expression evaluated to true: YES
;; </FIELD_LOOP>
;;
public class CustomFieldLoopExpression implements IExpressionToken
public property TokenName, String
method get
proc
mreturn “CUSTOM_FIELD_LOOP_EXPRESSION”
endmethod
endproperty
public property Description, String
method get
proc
mreturn “An example of a custom field loop expression.”
endmethod
endproperty
public property Validity, TokenValidity
method get
proc
mreturn TokenValidity.FieldLoop
endmethod
endproperty
public method Evaluate, Boolean
tkn, @Token
template, @FileNode
loops, @IEnumerable
endparams
proc
lambda doEvaluate(str, field, index)
begin
;TODO: Add code here to determine the result of the expression, and return true or false
mreturn true
end
mreturn ExpressionEvaluator.EvaluateFieldLoopExpression(tkn, template, loops, doEvaluate)
endmethod
endclass
endnamespace

CodeGen编写自定义表达式标记相关推荐

  1. python基于模型的预测概率和标签信息可视化ROC曲线、编写自定义函数计算约登值、寻找最佳阈值(threshold、cutoff)、可视化ROC曲线并在曲线中标记最佳阈值及其数值标签

    python基于模型的预测概率和标签信息可视化ROC曲线.编写自定义函数计算约登值.寻找最佳阈值(threshold.cutoff).可视化ROC曲线并在曲线中标记最佳阈值及其数值标签 目录

  2. python编写自定义函数计算约登值(约登指数、Youden Index)、寻找最佳阈值(threshold、cutoff)、可视化ROC曲线并在曲线中标记最佳阈值及其数值标签

    python编写自定义函数计算约登值(约登指数.Youden Index).寻找最佳阈值(threshold.cutoff).可视化ROC曲线并在曲线中标记最佳阈值及其数值标签 目录

  3. Matplotlib 中文用户指南 4.6 编写数学表达式

    编写数学表达式 原文:Writing mathematical expressions 译者:飞龙 协议:CC BY-NC-SA 4.0 你可以在任何 matplotlib 文本字符串中使用子 TeX ...

  4. Python Matplotlib中坐标轴标题中各种特殊符号的显示 转义字符全集,编写数学表达式

    Matplotlib中文显示问题--用例子说明问题 #-*- coding: utf-8 -*- from pylab import * t = arange(-4*pi, 4*pi, 0.01) y ...

  5. k8s kubebuilder系列开发 — 编写自定义资源和Reconciliation循环

    原文转自公众号云原生CTO 这是 Kubernetes Operator Dev N 部分系列的第三部分.在本文中,我们将深入探讨如何编写自定义资源和operator/控制器的reconciliati ...

  6. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  7. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义函数在三线表中添加p值

    R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义函数在三线表中添加p值 目录

  8. Python使用numpy包编写自定义函数计算平均绝对误差(MAE、Mean Absolute Error)、评估回归模型和时间序列模型、解读MAE

    Python使用numpy包编写自定义函数计算平均绝对误差(MAE.Mean Absolute Error).评估回归模型和时间序列模型.解读MAE 目录

  9. pandas编写自定义函数计算多个数据列的加和(sum)、使用groupby函数和apply函数聚合计算分组内多个数据列的加和

    pandas编写自定义函数计算多个数据列的加和(sum).使用groupby函数和apply函数聚合计算分组内多个数据列的加和 目录

最新文章

  1. JBoss7官方下载最新版本
  2. 最原创的验证码产生过程,桃花朵朵开
  3. LVM+Xen虚拟化应用
  4. android系统硬件OpenGL 3D移植(二)
  5. PEB标记反调试方法
  6. python元组可以修改吗_python元组元素可以修改吗
  7. Post 页面数据,使用boundary来格式化
  8. 【零基础】MT4量化入门三:写一个双均线指标
  9. 自考学习记录 课程代码03708《中国近代史纲要》1
  10. c语言编程线性规划,使用C语言实现单纯形法求解线性规划问题.doc
  11. 海外引流怎么做?巨象指纹浏览器助你,人人都是产品经理
  12. 飞凌单片机解密_GX28E01单片机解密
  13. 【亲自验证】Navicat连接MySql提示无法加载身份验证插件“缓存_sha2_密码”?
  14. matlab 实验七,matlab 实验七 数字填图问题
  15. 键盘、鼠标各键对应的ASCII码值
  16. Java Web项目开发流程
  17. Git Pull Failed: CONFLICT (content): Merge conflict in camus-aggregator/camus-admin-web/src/main/web
  18. Java获取Prometheus监控指标数据
  19. 多模态深度学习综述总结 与 目标检测多模态融合领域论文推荐
  20. 随笔:做一个平庸程序员,are you scared?

热门文章

  1. 使用hello word写小说
  2. 大数据学习01——配置虚拟机节点相关网络
  3. 2022-2028年中国互联网+不良资产处置行业深度调研及投资前景预测报告
  4. 点击改变div高度_css实现div两列布局(两种方法)
  5. python 通过队列实现栈
  6. 难忘的一天——装操系统(五)
  7. 【SpringMVC】基本概念
  8. Xcode couldn‘t find any iOS App Development provisioning profiles matching ‘com.example.***‘
  9. 开放式神经网络交换-ONNX(上)
  10. 结构感知图像修复:ICCV2019论文解析