通用反射API?

时间:2020-03-06 14:50:34  来源:igfitidea点击:

一段时间以前,我正在研究一种处理代码的算法,并且需要一个反射API。我们对多种语言的实现感兴趣,但是一种语言的Reflections API不适用于任何其他语言。因此,是否存在适用于所有语言或者某些主流语言(.NET,Java,Ruby,Python)的"通用反射API"之类的东西

如果没有,那么有可能构建一个可以处理来自不同语言的类的东西。

我们将如何采用统一的方式来处理多种语言的OO代码

解决方案

我不相信有通用的反射API。任何Reflection API都取决于编译器为语言构造生成的元数据,并且即使不同语言之间存在通用子集,这些语言也可能因语言而有很大差异。

在.NET中,存在CodeDOM,它提供了一种生成通用语法树,然后将其序列化为(C#,VB .NET等...)代码和/或者对其进行编译的方法。当然,那是Reflection的镜像,但是如果有人编写了直接从IL生成AST的工具,则功能可能会开始重叠。

无论如何,这是我能想到的最接近的东西。

反射API取决于为代码生成的元数据,因此我们可以为JVM上的所有语言或者CLR上的所有语言提供通用API ...但是实际上不可能制作出能够执行Python的API, Java和VB等...