对于给定的示例:
class Base {
static abstract void foo();
}
class ChildA extends Base{
static void foo(){};
}
class ChildB extends Base{
static void foo(){};
}
我想找到“Base”的所有子类(在每个子类上调用 foo)。我需要在构建时找到它(不需要运行时)。我唯一的想法是使用反射。但我不知道如何从 ClassMirror 访问课程?
这是我到目前为止所拥有的:
final mirror = currentMirrorSystem();
mirror.libraries.forEach((uri, libMirror) {
libMirror.classes.forEach((name, ClassMirror classMirror) {
try {
while ((classMirror = classMirror.superclass) != null) {
if (MirrorSystem.getName(classMirror.qualifiedName) == ".Base") {
//this is the classMirror of class i want
//but i have no idea how to access it
//or how to call foo() on it
print(classMirror);
print(classMirror.simpleName.toString());
}
}
} catch(e) {
print(e);
}
});
});
如前所述,我在运行时不需要这个,所以也许一种完全不同的方法可以解决这个问题。如果没有,问题是:我如何调用 foo()?
提前致谢。