我正在尝试在 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);
  } 
}