Reflexion bezüglich Ich habe nur ein paar „Hilfsfunktionen“ geschrieben, um eine Liste der Methodennamen Abrufen (keine Karte) und das Aufrufen der Methode ... alles, was ich sicher sagen kann ist, dass Es funktioniert jetzt. Es gibt wahrscheinlich technische Gründe dafür, dies nicht zu tun - aber in meinem Fall läuft das nicht in einer komplexen Umgebung. Ich denke jedoch, dass sie eine Menge Details überdecken, mit denen sich nicht alle auseinandersetzen wollen.
Hier ist ein funktionierendes Demonstration mit und ohne die Hilfsfunktionen:
#import('dart:mirrors');
class MyClass {
String _test;
String get test => _test;
set test(String paramVal) => _test = paramVal;
void my_method1(){print("in method1");}
void my_method2(){print("in method2");}
void print_test(){
print("test string is: ${_test}");
}
MyClass(String test) {
_test = test;
}
}
//Helper Methods
InstanceMirror hMr;
List REFLECT_methods(Object myClass) {hMr=reflect(myClass);return(hMr.type.methods.values);}
REFLECT_invoke(MethodMirror mm){hMr.invoke(mm.simpleName, []);}
main() {
MyClass myClass = new MyClass("Make my day, PUNK.");
print("\n=======Using Raw Reflection================");
InstanceMirror myClassInstanceMirror = reflect(myClass);
ClassMirror MyClassMirror = myClassInstanceMirror.type;
Map<String, MethodMirror> map1 = MyClassMirror.methods;
map1.values.forEach((MethodMirror mm){
myClassInstanceMirror.invoke(mm.simpleName,[]);
});
print("\n==========Using Helper functions=============");
List list2 = REFLECT_methods(myClass);
list2.forEach((method){
REFLECT_invoke(method);
});
}
ClassMirror enthält nicht mehr die Eigenschaft 'methods' Es hat jetzt 'instanceMembers' und 'declarations'. Wäre "instanceMembers" gleichbedeutend mit der alten "methods" -Eigenschaft? – ringstaff