Skip to content

Instantly share code, notes, and snippets.

Created November 10, 2016 16:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anonymous/53dae7eab07f4fad158e8fed3d62c1d5 to your computer and use it in GitHub Desktop.
Save anonymous/53dae7eab07f4fad158e8fed3d62c1d5 to your computer and use it in GitHub Desktop.
fancy-fashion-5431
import 'dart:mirrors' show
MirrorSystem, ClassMirror, ParameterMirror, DeclarationMirror, MethodMirror, reflectClass;
class SuperClass {
SuperClass(){ /* pass */ }
dummyFunc01(){ /* pass */ }
dummyFunc02(){ /* pass */ }
}
class SelfPrinting
extends SuperClass {
SelfPrinting(int arg1){ /* pass */ }
dummyFunc11(){ /* pass */ }
dummyFunc12(){ /* pass */ }
dummyFunc13(int i){ /* with arg(s): pass */ }
}
main() {
ClassMirror classMirror = reflectClass(SelfPrinting);
print(">> [ ${MirrorSystem.getName(classMirror.qualifiedName)} ] - - - - -");
print(">> + Declarations - - - - -");
classMirror.declarations.forEach((symbol, declarationMirror) {
print(MirrorSystem.getName(symbol));
});
print(">> + Members - - - - -");
classMirror.instanceMembers.forEach((symbol, methodMirror) {
print(MirrorSystem.getName(symbol));
});
// find contructors in declarations map
List<DeclarationMirror> constructors = new List.from(
classMirror.declarations.values.where((declare) {
return declare is MethodMirror && declare.isConstructor;
})
);
// cast DeclarationMirror into MethodMirror and use getter MethodMirror.parameters
// to get all parameters of the constructor.
constructors.forEach((constructor) {
if (constructor is MethodMirror) {
print(">> + Constructor - - - - -");
String name = MirrorSystem.getName(constructor.simpleName);
print("$name");
List<ParameterMirror> parameters = constructor.parameters;
print(">> + Parameters - - - - -");
parameters.forEach((parameter) {
String type = MirrorSystem.getName(parameter.type.simpleName);
String name = MirrorSystem.getName(parameter.simpleName);
print("$type: $name");
});
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment