Ho tre classi in dardo:Trova tutte le sottoclassi di dardo
class A {}
class B extends A{}
class C extends A{}
C'è un modo per ottenere tutte le sottoclassi di A?
Edit:
Grazie Alexandre Ardhuin la soluzione ha funzionato perfettamente!
sto imparando il dardo ho modificato il codice e mettere la soluzione ricorsiva, date un'occhiata:
import 'dart:mirrors';
class A {}
class B extends A{}
class C extends A{}
class D {}
class E extends C {}
bool isParent(String parent,ClassMirror clazz){
var objectParentName = MirrorSystem.getName(clazz.superclass.simpleName);
if (objectParentName == "Object"){
return parent == "Object";
}
var result = parent == objectParentName;
if (!result){
return isParent(parent,clazz.superclass);
}
return result;
}
List<String> findAllSubclasses(String clazz){
var result = [];
final ms = currentMirrorSystem();
ms.isolate.rootLibrary.classes.forEach((s,c) {
if (isParent(clazz,c)){
result.add(MirrorSystem.getName(c.simpleName));
}
});
return result;
}
main(){
var result = findAllSubclasses('A');
print(result);
}
Sono curioso di sapere cosa stai effettivamente cercando di realizzare. Questo è uno di quei casi in cui la risposta alla tua domanda è un semplice "No", e non possiamo davvero aiutare più di così senza sapere quale sia l'obiettivo reale. –
Vorrei raccomandare l'uso di lib refletterabile dato che è meglio usarlo con dart2js ed è fornito anche dal dart team – Jonathan