如何通过LabVIEW父类获取其所有子类?

两种实现方法:

1. VI Server 方式:

子类与父类之间存在静态链接,而父类与子类之间则是动态链接。这意味着,一旦某个类被加载到内存中,其父类就会知晓该子类的存在。根据官方文档说明,这种方法在运行时环境(Runtime Environment)中无效,这一点需要大家注意。
image

2. 运行时反射(Runtime Reflection)方式:(推荐)

以下代码同样能返回所有已加载到内存中的子类,但相比前一种方法,它使用的 VI Server 功能更少,因此在运行时环境中也能正常工作。我通常在实现插件架构(Plugin Architecture)时使用这种方法。虽然我没有对它做过大量性能测试,但在一个中等规模的项目(约包含 150 个类)中,它的运行时间仅需约 50 毫秒,因此到目前为止使用效果都很好。
image
或者同时获取出父类所有子类的名称:
image
这里说明一下,我演示的仅仅是单层继承,如果是多层继承,则子类再作为父类用同样的方法获取;其实也就是递归,就可以列出父类所有的继承链上的子类了。
LabVIEWer的编程时光300pixel

posted @ 2025-11-25 09:29  Stephen_Young  阅读(46)  评论(0)    收藏  举报