createMirror static method

InstanceMirror createMirror(
  1. Type clazz,
  2. Container container
)

Implementation

static InstanceMirror createMirror(Type clazz, Container container) {
  final clazzDeclaration = reflectClass(clazz);
  final injectableMirror = reflectClass(Injectable);
  var instance = clazzDeclaration.newInstance(const Symbol(''), []);

  clazzDeclaration.declarations.forEach((key, value) {
    value.metadata.forEach((meta) {
      if (meta.type == injectableMirror) {
        final injectable = (meta.reflectee as Injectable);
        final key = injectable.containerKey;
        final containerValue = container.make(key);
        instance.setField(value.simpleName, containerValue);
      }
    });
  });

  return instance;
}