有些时候我正在开发一种处理代码的算法,并且需要一个反射API。我们对它的多种语言实现感兴趣,但语言的反射API不适用于任何其他语言。那么有什么像“通用反射API”可以适用于所有语言,或者可能适用于少数主流语言(.NET,Java,Ruby,Python)
如果没有,是否有可能构建可以处理来自不同语言的类的东西。
您将如何使用统一的方式处理来自多种语言的OO代码
答案 0 :(得分:1)
我不相信有通用的Reflection API。任何Reflection API都依赖于编译器为语言结构生成的元数据,这些元素在不同语言之间可能有很大不同,即使跨多种语言有共同的子集。
答案 1 :(得分:1)
在.NET中有CodeDOM,它提供了一种生成通用语法树然后将其序列化为(C#,VB .NET等...)代码和/或编译它的方法。当然这是Reflection的镜像,但如果有人编写工具直接从IL生成AST,功能可能会开始重叠。
无论如何,它是我能想到的最接近的东西。
答案 2 :(得分:1)
反射API依赖于为代码生成的元数据,因此您可以为JVM上的所有语言或CLR上的所有语言提供通用API ...但实际上不可能生成一个做Python,Java和VB等......
答案 3 :(得分:0)
如果您需要通用API,则需要超出语言范围。请参阅我们的DMS meta-tool以处理任意语言,并回答任意问题,包括您认为是反思的问题。 (Op要求支持各种语言:DMS有C#,VB.net,Java和Python的完整解析器.Ruby尚未出现在列表中;我们正在研究它。)