我们有一个包含许多类的文件夹,这些类继承自同一个基类。他们的名字格式如下:
程序应扫描此类文件夹并使用类名前缀和计数创建临时表(f.ex" firsttypesubclass"和count = 3):
DEFINE PUBLIC TEMP-TABLE TT_AllSubClasses NO-UNDO
FIELD Name AS INT /* f.ex "firsttypesubclass" */
FIELD Name AS INT /* f.ex "firsttypesubclass" */
.
然后我们需要根据循环中找到的类动态创建新实例,如下所示:
DEF VAR newInstance AS CLASS myBaseClass NO-UNDO.
newInstance = DYNAMIC-NEW TT_AllSubClasses.Name + "_" + STRING(1)(123123) NO-ERROR.
有没有方便的方法列出文件夹中的类名?或者是否可能获得从基类继承的所有类?我正在考虑使用文件系统来检查文件。
答案 0 :(得分:0)
您必须联系文件系统并列出相关文件夹中的所有类文件。如果在运行时源代码不可用,则应将代码基于R代码。 INPUT FROM OS-DIR
是你的朋友。
如果您在这些相关文件夹中混合基于程序和类的R代码,您还必须验证R代码是来自过程还是类:
RCODE-INFO:FILE-NAME = cFileName .
IF RCODE-INFO:IS-CLASS THEN ...
OpenEdge 11.6具有更多反射功能。但是没有列出给定基类的所有子类的功能。由于ABL没有针对类的固定库方案(如C#),因此实现Progress可能也很困难。