如何使用私有构造函数反映导入包中的类?

时间:2019-04-10 21:15:06

标签: reflection dart flutter dart-mirrors

我正在使用reflectable库来反映导入包中的类型(例如analysis_server_clientflutter)。我可以考虑一下具有NotificationRequest之类的公共构造函数的类型(来自analysis_server_client包)。我通过扩展这些类型然后使用superclassQuantifyCapability功能来思考这些类型。

但是,由于无法扩展它们,因此无法反映具有私有构造函数的类型,例如Icons(来自flutter包)。有没有办法反思像Icons这样的具有私有构造函数的类型?

1 个答案:

答案 0 :(得分:0)

我知道了。您必须使用GlobalQuantifyCapability来声明要在其上生成反射的成员。它也可用于带有私有构造函数的类。一些示例代码:

@GlobalQuantifyCapability(r"^.(SomeClass|SomeEnum)", reflector)
import 'package:reflectable/reflectable.dart';

import 'package:some_package/some_class.dart';
import 'package:some_package/some_enum.dart';

class Reflector extends Reflectable {
  const Reflector() : super(declarationsCapability, ...);
}
const reflector = const Reflector();