【发布时间】:2013-03-01 07:22:06
【问题描述】:
在实施我的下一个程序之前,我有一些要求 - 希望存在一种可以执行以下操作的编程语言:
- 给定一个类(或接口)C,编程语言允许用户访问扩展/实现 C 的所有类的列表。
- 编程语言允许用户遍历类的所有变量和方法。
-
用户能够确定函数将采用的参数的数量和类型。
eg. foo(int a, String b, int c) can be queried to return 3 or [int, String, int]
这些要求是荒谬的,还是某些语言将它们作为基本的反射技术来实现?
【问题讨论】:
-
.NET(任何语言)满足要求如果您愿意将“所有类”限制为“已知程序集中的所有类”。
-
抱歉,我不太明白您所说的“已知程序集”是什么意思?
-
他的意思是(例如)如果我从 C 继承一个类,编译它并将生成的二进制文件(在 .net 世界中称为程序集)保存在 USB 密钥中我的口袋,那么你不能对此使用反射。
-
@sdasdadas:在 .NET 中,代码内置在程序集中。您可以反映任何有效的程序集(可以由您正在使用的运行时加载),但它不会知道您没有告诉它的程序集中存在的类。
-
语言需要静态类型吗?否则 Python 满足您的要求。
标签: reflection programming-languages requirements