我正在尝试在 Dart 中构建一个使用反射的实体管理器。这个想法是方法getById(String id, String returnClass)调用方法_get[returnClass]ById(String id)。
为此,我正在使用 dart:mirrors 并尝试确定我的实体管理器对象是否有这样的方法,然后调用它。不幸的是,LibraryMirror 不包含任何功能。
class EntityMgr {
Object getById(String id, String returnClass) {
InstanceMirror result = null;
String methodName = '_get'+returnClass+'ById';
// Check if a method '_get[returnClass]Byid exists and call it with given ID
if(_existsFunction(methodName)) {
Symbol symbol = new Symbol(methodName);
List methodParameters = new List();
methodParameters.add(id);
result = currentMirrorSystem().isolate.rootLibrary.invoke(symbol, methodParameters);
}
return result;
}
Product _getProductById(String id) {
return new Product();
}
bool _existsFunction(String functionName) {
return currentMirrorSystem().isolate.rootLibrary.functions.containsKey(functionName);
}
}