通用反射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等...