关于GeneXus封装方法Model的方法

   最近 刚从外地出差回来 工作任务不是很重 能够抽点时间记点东西 下午花了2个多钟头尝试了一下GeneXus的封装方法的功能,这里记一下便于自己以后查看。我们在许多项目中或多或少都会有着重复代码编写的过程 一个方法我们可能在这个项目中用到亦或者在其他项目中也用到了,那么有什么办法能不这样重复造轮子呢,这是wiki链接 从这个里面我们可以知道 在GeneXus中有着这样一种功能封装Model他能够使我们在一个项目中把能够重复利用的方法集合成一个工具包 并且在其他项目中反复使用并且能够不断扩充更新和迭代。知道我们要干什么之后我们就开始搞事情了

原理
GeneXus中提供并允许对模块的打包并将其安装与其他知识库中使用
使用此机制安装的模块由另一个KB提供,具有以下特征:
  • 只是模块的API是可见的
  • API是只读的
  • 它由API的特定版本及其实现(相应的二进制文件)组成
  • 版本控制系统(模块管理器)允许在新版本可用时更新它。
这提供了以下好处:
  • 它允许保护代码的隐私
  • 很明显,模块由提供者维护,避免了不必要的更改。
  • 它提高了构建性能(代码只在原点构建一次)
  • 模块可以在公司中轻松分发,也可以通过市场公开分发 
使用场景
我们在不同的项目中时常会不断的重复编写同样逻辑的代码实际上就是不停的造轮子,那么我们是否可以通过此种方式来减少项目中不必要的编写时间并且提高效率和准确性
举个例子,我们可能在某个项目中需要用到对某一些时间类型格式的数据进行转换操作比如实际数据为“2019-9-10” 但是为了优化显示我们可能需要变成“2019年9月10日” 这种形式,当然如果只有一种的话那么也不需要这种方式了 就是怕一些地方显示的风格不一样就会造成以下这种情况↓
0
 
0
 
0
为了区分我们还写了一个DmMain来判断
0
这是我们公司内部项目中的共同方法 由于使用的场景不同显示风格并不统一并且此方法肯定在未来的项目中都能使用到 为了避免重复造轮子 所以我们现在的目的就是将其 打包封装 并于其他KB上去使用。
实现步骤
首先我们选择GeneXus版本为G16-131425上新建一个KB 环境为.Net环境,然后新增一个模块
注意此处的版本 我创建模块和调用模块属于16大版本但是小版本不一样
0
将其命名为“ChangeDateDisPlay”模块,然后将方法所涉及到的东西全部移动至此模块下包括上面提到的那个DoMain也要移动到模块下 移动完成后如下图所示
0
里面的东西我就不展示了 直接调用并且编译页面的展示结果是可行的
0
这里我们 封装打包选择需要封装的模块右键封装
0
填写对应描述信息点击保存
0
提示以下信息即可表名创建成功
0
文件会保存在当前KB目录下的modules下的opc文件 'opc'扩展名代表Open Packaging Convention;
0
此时我们以及可以去调用这个文件了 我们打开GeneXus版本为G16-132732的(这里我用的不同版本 目的是为了测试能否互相兼容使用 同大版本是可行的我已经测试过了)同样新建一个KB然后右键管理引用模块
0
 
0
 
0
 
0
 
0
我们可以在知识库目录下找到该封装的模块 点开方法我们可以发现这个方法是只读的
0
我们尝试调用它
0
Yes 调用成功!
0
如果有遇到上述操作没问题 但是调用时发生提示该包下面方法有问题的 比如“不存在类型或命名空间名称”或者“是否缺少程序集引用” 可能是应为这个方法dll是空的
最好在编写包的KB中尝试调用并且成功后再进行打包操作!
posted @ 2019-09-09 21:38  次元宅的我  阅读(368)  评论(0编辑  收藏  举报